2013-02-16 3 views
1

вот ссылка на код captcha, который им используется click here Проблема заключается в том, когда я отправляю код captcha, он всегда говорит об ошибке, когда я делаю свое подтверждение. всегда отображается сообщение об ошибке, поэтому он не правильно проверяет, как я использую сеанс ['captcha'] ['code'], не испортив каждый пост назад Что-то не так, как будто оно должно измениться после сообщения назад и отличается в сеанс, но когда я печатаю ($ _ SESSION), значение должно быть введено и сопоставлено.Сессия captcha всегда неверна

PHP: все на одной странице.

<?PHP 
session_start(); 
$_SESSION['captcha'] = captcha(); 
$captcha_code = $_POST["captcha_code"]; 

if(isset($_POST["captcha_code"])){ 
    do verification here // 
    if(....) { 
     if(strtolower($captcha_code) != strtolower($_SESSION["captcha"]["code"])) {     

      $error_message .= "<li>The code you entered is incorrect.</li>";  
      $hasError = true; 
     } 
    } 
} 
+0

Создайте сеанс после проверки сообщения! Таким образом вы создаете новый сеанс, прежде чем сравнивать его с опубликованным. То, что это всегда неправильно! –

ответ

0

Поскольку я не могу проверить содержимое файла captcha.php - я не могу много помочь с вашей проблемой. Однако это возможность.

Ваши $ _SESSION ['captcha'] = captcha(); Мне кажется неправильным (потому что я не могу найти источник для captcha.php}. Если он устанавливает сеанс на той же загрузке страницы, что и отправленная форма, как вы уверены, что при использовании вызова print_r ($ _ SESSION) задан не какой-либо другой сеанс captcha? Если вы понимаете, о чем я. В вашей функции captcha() (файл captcha.php) устанавливается ли там сеанс, не подтверждая фальшивый пост? Таким образом, изменяя загрузку страницы в $ _POST? Другими словами - это обеспечение того, что он не «перезагружается», когда форма отправляется до проверки ввода пользователей.

Где captchaa.php код?

Кроме того, вам, кажется, не хватает include ("captcha.php"); после session_start(); вызов. Это может быть ваша проблема прямо там. Но, не могу подтвердить.

Смежные вопросы