Advertisement

07.05.2008 at 01:35PM PDT, ID: 23541011 | Points: 500
[x]
Attachment Details

I am trying to reload a captcha

Asked by cgaviria in PHP Scripting Language, JavaScript

Tags:

Hello,

I am trying to reload a captcha with a button and javascript. The way I have it set up right is like this:

the HTML img
<img id="imgCaptcha" src="/php/create_captcha.php" />

the HTML button
<img id="captcha_img" src="/images/buttons/reload.png" class="neutral-link" rel="Reload" title="Reload" onClick="reloadCaptcha();">

the javascript
function reloadCaptcha() {
      if (refresh_count == '') {
            refresh_count = 0;
      }
      document.images["imgCaptcha"].src = '/php/create_captcha.php?c=' + refresh_count;
      refresh_count = refresh_count + 1;
}

the PHP
 //Start the session so we can store what the security code actually is
session_start();

//Send a generated image to the browser
create_image();
exit();

function create_image()
{
    $increment = $_GET['c'];
   
    //Let's generate a totally random string using md5
    $md5_hash = md5(rand(0,999)*$increment);
    //We don't need a 32 character long string so we trim it down to 5
    $security_code = substr($md5_hash, 15, 5);

    //Set the session to store the security code
    $_SESSION["security_code"] = $security_code;

    //Set the image width and height
    $width = 200;
    $height = 27;

    //Create the image resource
    $image = ImageCreate($width, $height);  

    //We are making three colors, white, black and gray
    $white = ImageColorAllocate($image, 255, 255, 255);
    $black = ImageColorAllocate($image, 51, 79, 62);
    $grey = ImageColorAllocate($image, 0, 204, 102);

    //Make the background black
    ImageFill($image, 0, 0, $black);

    //Add randomly generated string in white to the image
    ImageString($image, 5, 100, 6, $security_code, $white);

    //Throw in some lines to make it a little bit harder for any bots to break
    ImageRectangle($image,0,0,$width-1,$height-1,$grey);
    imageline($image, 0, $height/2, $width, $height/2, $grey);
    imageline($image, $width/2, 0, $width/2, $height, $grey);
 
    //Tell the browser what kind of file is come in
    header("Content-Type: image/jpeg");

    //Output the newly created image in jpeg format
    ImageJpeg($image);
   
    //Free up resources
    ImageDestroy($image);
}Start Free Trial
[+][-]07.05.2008 at 03:11PM PDT, ID: 21938557

At Experts Exchange, members can ask their questions to thousands of technology professionals, also known as Experts. Experts compete and collaborate to answer those questions by leaving comments like this one.

Start your 7-day free trial to view this Expert Comment or ask the Experts your question.

 
[+][-]07.05.2008 at 04:27PM PDT, ID: 21938755

At Experts Exchange, members can ask their questions to thousands of technology professionals, also known as Experts. Experts compete and collaborate to answer those questions by leaving comments like this one.

Start your 7-day free trial to view this Expert Comment or ask the Experts your question.

 
[+][-]11.16.2008 at 04:26AM PST, ID: 22970396

Experts Exchange has a courteous staff of administrators who help members get the most out of the website by means of administrative comments like this one.

Start your 7-day free trial to view this Administrative Comment or ask the Experts your question.

 
 
Loading Advertisement...
20080716-EE-VQP-32 / EE_QW_2_20070628