我有以下脚本生成验证码:
// captcha.php
session_start();
$captcha_token='';
for($i=1; $i<=5; $i++){$captcha_token .= rand(0,9).' ';}
$_SESSION['captcha'] = str_replace(" ","",$captcha_token);
$im = imagecreatetruecolor(110, 34);
$red = imagecolorallocate($im, 245, 245, 245);
imagefill($im, 0, 0, $red);
$text_color = imagecolorallocate($im, 80, 80, 80);
imagestring($im, 8, 15, 9, $captcha_token, $text_color);
header('Content-Type: image/jpeg');
imagejpeg($im);
imagedestroy($im);
此外,我有多个需要验证码的页面。我对所有人使用captcha.php
。像这样:
// contact.php
<input name="captcha" type="text" />
<img src="captcha.php" />
// resend_password.php
<input name="captcha" type="text" />
<img src="captcha.php" />
// multiple_wrong_login.php
<input name="captcha" type="text" />
<img src="captcha.php" />
一切都很好。正如您所看到的,所有脚本只有一个会话$_SESSION['captcha']
。当我在contact.php
之后立即打开resend_password.php
时,contact.php
中的验证码将无效。我该如何解决?我是说如何为不同的页面制作单独的验证码?
答案 0 :(得分:1)
这是我的建议:
将变量解析为验证码脚本,如下所示:
<img src="captcha.php?page=resend_password" />
然后在剧本中:
$_SESSION['captcha'][$_GET['page']] = str_replace(" ","",$captcha_token);