简体   繁体   中英

Php captcha session variable not found

I have this captcha.php file that I load on the page I want the captcha to appear on using jQuery load.

In the captcha.php file I start a new session and I set a variable ( theCaptchaCode ) which contains the code you see on the image, but when I try to get the session variable with $theCaptchaCode = $_SESSION['theCaptchaCode'] . It says

undefined index: theCaptchaCode.

Captcha.php code:

<?php
    //Killing previous session
    session_start();
    session_unset();
    session_destroy();
?>
<?php
    session_start();
    $theCaptchaCode = "";
    $thisCaptchaImg = imagecreatetruecolor(200, 50);
    $color = imagecolorallocate($thisCaptchaImg, 0, 0, 0);
    $dotColor = imagecolorallocate($thisCaptchaImg, 46, 46, 46);
    $backgroundColor = imagecolorallocate($thisCaptchaImg, 255, 255, 255);
    imagefilledrectangle($thisCaptchaImg, 0, 0, 200, 70, $backgroundColor);
    $characters = '123456789QWERTYUIOPASDFGHJKLZXCVBNM';
    $length = strlen($characters);
    for ($l = 0; $l < 4; $l++)
    {
        imageline($thisCaptchaImg, 0, rand() % 50, 200, rand() % 50, $color);
    }
    for ($d = 0; $d < 1500; $d++)
    {
        imagesetpixel($thisCaptchaImg, rand() % 200, rand() % 50, $dotColor);
    }
    for ($c = 0; $c < 7; $c++)
    {
        $selCharacter = $characters[rand(0, $length - 1)];
        imagestring($thisCaptchaImg, 5, 5 + ($c * 30), 20, $selCharacter, $color);
        $theCaptchaCode .= $selCharacter;
    }
    imagepng($thisCaptchaImg, 'thisCaptchaImage.png');
    $_SESSION['theCaptchaCode'] = $theCaptchaCode;
    session_destroy();
?>

At the end of your code remove the session_destroy() method.

Edited: Use the below code:

<?php session_start();
$theCaptchaCode = "";
$thisCaptchaImg = imagecreatetruecolor(200, 50);
$color = imagecolorallocate($thisCaptchaImg, 0, 0, 0);
$dotColor = imagecolorallocate($thisCaptchaImg, 46, 46, 46);
$backgroundColor = imagecolorallocate($thisCaptchaImg, 255, 255, 255);
imagefilledrectangle($thisCaptchaImg, 0, 0, 200, 70, $backgroundColor);
$characters = '123456789QWERTYUIOPASDFGHJKLZXCVBNM';
$length = strlen($characters);
for($l=0;$l < 4;$l++)
{
    imageline($thisCaptchaImg, 0, rand()%50, 200, rand()%50, $color);
}
for($d=0;$d < 1500;$d++)
{
    imagesetpixel($thisCaptchaImg, rand()%200, rand()%50, $dotColor);
}
for($c=0;$c < 7;$c++)
{
    $selCharacter = $characters[rand(0, $length-1)];
    imagestring($thisCaptchaImg, 5, 5+($c*30), 20, $selCharacter, $color);
    $theCaptchaCode .= $selCharacter;
}
imagepng($thisCaptchaImg, 'thisCaptchaImage.png');
$_SESSION['theCaptchaCode'] = $theCaptchaCode;
?>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM