私は、$_SESSION['captcha_string']
セッション変数に値文字列を与えるcaptcha-generator phpコードを持っています。実際のセッション変数(HTML/PHP)を取得できません
PHPキャプチャ・ジェネレータコード:暫定的に
<?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 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
$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);
?>
、私はキャプチャ・ジェネレータを実行するページをロードするとき、私は(以下のコードを参照してください)$_SESSION['captcha_string']
変数の値をプリントアウトしようとしたが、以前に生成された値(すなわち、遅延)を与える。たとえば、ページを読み込み、キャプチャ画像に「ABCDE」と表示されます。私はページをリロードし、キャプチャ画像には「BCDEF」と表示されますが、印刷される値は「ABCDE」です。その後、ページを再読み込みし、キャプチャ画像に「CDEFG」と表示され、印刷された値は「BCDEF」になります。
HTMLコード:
<?php session_start(); ?>
<!DOCTYPE html>
.. some irrelevant code here ..
<img id="captchaimg" src="captcha_generator.php">
<div><?php echo $_SESSION['captcha_string'] ?></div>
がどのように私は右のそれを行うことができますか?
更新:画像と$_SESSION['captcha_string']
が同時に適切なペアになることをどうすれば達成できますか?実際には、ACTUAL$_SESSION['captcha_string']
をjavascript関数で使用する必要があります。どうやって?
を。実行順序はHTMLのコードの順序と同じではありませんか?最初にキャプチャが生成され、セッション変数が設定され、次に「プリントアウト」されます。 – ZsG
問題は:あなたは 'captcha_generator.php'を呼んでいません。ブラウザは、ページ全体を送信してイメージをロードした後です。 – colburton
したがって、generator-phpが動く前にページ全体がロードされていますか? – ZsG