2014-09-04 3 views
0

Я использую этот скрипт: https://github.com/claviska/simple-php-captchaPHP Captcha возвращает старое значение и проверяет старое значение

Чтобы сделать капчу в PHP.

У меня есть эти коды:

session_start(); 
include_once 'simple-php-captcha.php'; 
$_SESSION = array(); 
$_SESSION['captcha'] = simple_php_captcha(); 
$code = $_SESSION['captcha']['code']; 
if (isset($_POST['username'])&&isset($_POST['password'])) { 
    if (!empty($_POST['username']) && !empty($_POST['password'])) { 
        $username = $_POST['username']; 
        $password = $_POST['password']; 
         if (isset($_POST['captcha'])&&!empty($_POST['captcha'])) { 
          $captcha = $_POST['captcha']; 
          if ($captcha == $code) { 
           echo "Login"; 
          } else { 
           $errors[] = "Capcha is Not True."; 
          } 
         } else { 
          $errors[] = "Enter capcha."; 
         } 
     } else { 
        $errors[] = "Enter all."; 
       } 
} 

и HTML формы:

<form accept="" method="POST"> 
username: <input type="text" name="username"> 
password: <input type="password" name="password"> 
captcha: <input type="text" name="captcha"> 
<img src="<?php echo $_SESSION['captcha']['image_src']; ?>"> 
<input type="submit" class="Button" value="submit"> 
</form> 

НО

Проблема заключается в том, что каждый раз, когда я ввести капчу и отправить форму, новее капчи будет сформирована и форма всегда будет возвращена НЕ ИСТИННАЯ CAPTCHA.

Например, я открываю страницу, и, например, captcha является следующим: 52111, (я ввожу его правильно), затем я отправляю, затем я вижу ошибку, что captcha является неправильным, потому что новый сгенерированный captcha является другим : 48852.

Я имею в виду каждый раз, когда страница генерирует более новую, как я могу исправить эту проблему ??

ответ

0

Вы должны сохранить старое значение капчи, перед тем, проверьте форму:

session_start(); 
if (!isset($_SESSION['captcha']) { 
    $_SESSION['captcha'] = simple_php_captcha(); 
} 
$code = $_SESSION['captcha']['code']; 

include_once 'simple-php-captcha.php'; 
if (isset($_POST['username'])&&isset($_POST['password'])) { 
    if (!empty($_POST['username']) && !empty($_POST['password'])) { 
       $username = $_POST['username']; 
       $password = $_POST['password']; 
        if (isset($_POST['captcha'])&&!empty($_POST['captcha'])) { 
         $captcha = $_POST['captcha']; 
         if ($captcha == $code) { 
          echo "Login"; 
         } else { 
          $errors[] = "Capcha is Not True."; 
         } 
         unlink($_SESSION['captcha']) 
        } else { 
         $errors[] = "Enter capcha."; 
        } 
    } else { 
       $errors[] = "Enter all."; 
    } 
} 
+0

Tnx, но не сработал :( – Pafo

+0

Приложите свой полный скрипт. Этот код работает. У вас есть ошибка где-то еще. – BaBL86

0

добавить с JS некоторой строки запроса с текущей датой в chapacha поэтому изображение будет удалено из браузера cahce:

$('img').prop('src',+"<?php echo $_SESSION['captcha']['image_src']; ?>?_="+new Date().valueOf()) 
+0

Ничего не изменилось. – Pafo

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