>------ソリューションのアイデア-----------
セッションに保存---- --ソリューションのアイデア-------
セッションは----- -ソリューションのアイデア-- --------------------
2 つの文を追加
<br /><?php<br />session_start(); // 開啓session<br />ob_clean();<br />for($i=0;$i<4;$i++){<br />$num.=dechex(rand(0,15)); <br />}<br />$num=substr($num,-4,4);<br />$_SESSION['captcha'] = $num; // 把驗證碼寫入session<br />$nowimage=imagecreate(100,30);<br />imagecolorallocate($nowimage,240,240,240);<br />for($i=0;$i<strlen($num);$i++){<br />$font=mt_rand(3,5);<br />$x=mt_rand(1,8)+100*$i/4;<br />$y=mt_rand(1,50/4);<br />$color=imagecolorallocate($nowimage,rand(0,150),rand(0,150),rand(0,150));<br />imagestring($nowimage,$font,$x,$y,$num[$i],$color);<br />}<br />for($i=0;$i<200;$i++){<br />$randcolor=imagecolorallocate($nowimage,rand(200,255),rand(200,255),rand(200,255));<br />imagesetpixel($nowimage,rand()%70,rand()%20,$randcolor);<br />}<br />header("content-type:image/png");<br />imagepng($nowimage);<br />imagedestroy($nowimage);<br />?><br />
ログイン後にコピー
$_SESSION ['captcha'] = $num;
検証ページ
session_start();
if($captcha == $_SESSION['captcha']){ // $captcha は検証コードですユーザーによって送信されました
// pass
}else{
// 一致しません
}
------解決策のアイデア----- ---- --------------
index.php は verficode.php よりも先に実行され、1 ステップ遅いのが正常ですそこで、zf は検証コードのイメージを保存する方法を採用しています計画 は数日前にここで議論されたばかりです。検索してみてください