Работа с сессиями и капчей - PullRequest
       12

Работа с сессиями и капчей

0 голосов
/ 06 августа 2011

По какой-то причине я не могу заставить работать мои сессионные капчи.

Это то, что я сейчас пытаюсь.

$_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 ]

2 голосов
/ 06 августа 2011

Эти сеансы создаются на той же странице, на которую публикуется форма?Возможно, $ _SESSION ['ожидаемо] перезаписывается новым значением.В этом случае он не будет равен $ _POST ['captcha'].

1 голос
/ 06 августа 2011

Сессия запускается либо session_start () , либо session.auto-start -directive?

И вы уверены, что идентификатор сессиипроходит?

1 голос
/ 06 августа 2011

используйте этот порядок:

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

...

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

таким образом значения не будут перезаписаны

...