如何为不同的页面分配会话?

时间:2016-06-23 21:48:25

标签: php session captcha

我有以下脚本生成验证码:

// 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中的验证码将无效。我该如何解决?我是说如何为不同的页面制作单独的验证码?

1 个答案:

答案 0 :(得分:1)

这是我的建议:

将变量解析为验证码脚本,如下所示:

<img  src="captcha.php?page=resend_password" />

然后在剧本中:

$_SESSION['captcha'][$_GET['page']] = str_replace(" ","",$captcha_token);