I have a captcha-generator php code, which gives the value string to the $_SESSION['captcha_string']
session variable.
PHP captcha-generator code:
<?php
session_start();
header ("Content-type: image/png");
$dirPath="/opt/lampp/htdocs/WebSiteFolder/dfxCaptcha/";
$font='/opt/lampp/htdocs/WebSiteFolder/DejaVuSerif-Bold.ttf';
$imgWidth=200;
$imgHeight=50;
global $image;
$image = imagecreatetruecolor($imgWidth, $imgHeight) or die("Cannot initialize a new GD image stream.");
$background_color = imagecolorallocate($image, 0, 0, 0);
$text_color = imagecolorallocate($image, 255, 255, 255);
imagefilledrectangle($image, 0, 0, $imgWidth, $imgHeight, $background_color);
$letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
$len = strlen($letters);
$letter = $letters[rand(0, $len - 1)];
$word = "";
for ($i = 0; $i < 4; $i++) {
$letter = $letters[rand(0, $len - 1)];
imagettftext($image, 15, 0, $i*50+25, 50, $text_color, $font, $letter);
$word .= $letter;
}
$_SESSION['captcha_string'] = $word;
$images = glob($dirPath."*.png");
foreach ($images as $image_to_delete) {
@unlink($image_to_delete);
}
imagepng($image);
?>
Tentatively, when I load the page that run the captcha-generator, I try to print out (see the code below) the value of the $_SESSION['captcha_string']
variable, but it gives the value which was previously generated (ie: delays). For example I load the page and the captcha image shows "ABCDE". I reload the page and the captcha image shows "BCDEF", but the printed value is "ABCDE". After it I reload the page again, and the captcha image shows "CDEFG" and the printed value is "BCDEF".
HTML code:
<?php session_start(); ?>
<!DOCTYPE html>
.. some irrelevant code here ..
<img id="captchaimg" src="captcha_generator.php">
<div><?php echo $_SESSION['captcha_string'] ?></div>
How can I do it right?
UPDATE: how can I achieve that the image and the $_SESSION['captcha_string']
will be the proper pair at the same time? Actually I need to use the ACTUAL $_SESSION['captcha_string']
in a javascript function. How?