使用Sessions和Captcha

时间:2011-08-05 20:15:18

标签: php forms captcha

由于某种原因,我无法让我的会话验证码工作。

这就是我目前的尝试。

$_SESSION['n1'] = rand(1,20);
$_SESSION['n2'] = rand(1,20);
$_SESSION['expect'] = $_SESSION['n1']+$_SESSION['n2'];

这就是我的形式

<form action="" method="post">
    <?=$_SESSION['n1']?> + <?=$_SESSION['n2']?> =
    <input name="captcha" type="text" class="text" />
<input name="submit" type="submit" /> 

由于某种原因,它总是在验证码不正确的情况下返回。

if($_SESSION['expect'] != $_POST['captcha']) {
   $err[] = 'The captcha answer is incorrect.';
}

3 个答案:

答案 0 :(得分:2)

这些会话是否在表单发布到的同一页面上创建?也许$ _SESSION ['expect']被新值覆盖。在这种情况下,它不会等于$ _POST ['captcha']。

答案 1 :(得分:1)

使用该命令:

if($_SESSION['expect'] != $_POST['captcha']) {
  $err[] = 'The captcha answer is incorrect.';
}

...

$n1 = rand(1,20);
$n2 = rand(1,20);
$_SESSION['expect'] = $n1 + $n2;

那样的值不会被覆盖

答案 2 :(得分:1)

正在通过session_start()session.auto-start - 指令启动会话?

你确定会话ID正在传递吗?