За последние 24 часа нас посетили 22693 программиста и 1015 роботов. Сейчас ищет 701 программист ...

Не срабатывает проверка ввода капчи php

Тема в разделе "PHP для новичков", создана пользователем _ne_scaju_, 28 апр 2017.

  1. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    Добрый вечер случилась ситуация, что как не крутил проверку на правильность ввода каптчи, так ее и не сделал.
    И так к делу, есть форма типа:
    PHP:
    1. <form action="" method="POST">
    2.     <img class="" id="captcha" src="captcha.php" alt="" /><br>
    3.     <span onclick="document.getElementById('captcha').src = '/captcha.php?' + Math.random()">обновить</span><br>
    4.     <input class="" name="captcha" placeholder="Введите код с картинки" type="text" value=""><br>
    5.     <input class="" type="submit" name="user_register" value="Зарегистрироваться"><br>
    6. </form>
    7.  
    8. //И тут код для проверки
    9. if(empty($_POST['captcha'])){
    10. $err[] = 'Капча не может быть пуста<br>';
    11. }elseif(!empty($_POST['captcha']) != $_SESSION['captcha']){
    12. $err[] = 'Ошиблись при вводе капчи';
    13. }else{
    14. echo 'vse horosho';
    15. }
    Как только не подставлял условие, не хочет ее проверять да и все.
    Вроде все логично сделал, а проверка не проходит.

    Вы конечно не орите с меня. Но мое мнения что все тут я правильно сделал.
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.745
    Симпатии:
    1.321
    Адрес:
    Лень
    в начале скрипта есть стартер сессии ?
    --- Добавлено ---
    session_start()
    --- Добавлено ---
    если есть проверь:
    в конце кода впиши дебажик
    var_dump( $_POST['captcha'] , $_SESSION['captcha'] );
     
  3. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @MouseZver
    Вот это я про тупил, жесть, нету конечно, аааааа, зря тему создал...
    Сейчас стартану, и будет гуд)
    Я и так варДампом проверяю, сходится ввод данных что ввел и что есть в переменной Сессии капчи.
     
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.745
    Симпатии:
    1.321
    Адрес:
    Лень
    а ты не торопись у тебя тут шпионы Notice засели
     
  5. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @MouseZver
    Угу уже поторопился) Не получилось, ааа :D
    Включить лог ошибок?
    ini_set('display_errors','On');
    error_reporting('E_ALL');
     
  6. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.745
    Симпатии:
    1.321
    Адрес:
    Лень
    да, и оставь
    error_reporting( E_ALL );
    достаточно
     
  7. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @MouseZver
    vse horosho
    array(2) { ["captcha"]=> string(5) "N53Kv" ["user_register"]=> string(32) "Зарегистрироваться" } array(1) { ["captcha"]=> string(5) "N53Kv" }
    Я понял, в чем проблема была, надо было мне и маленькие и большие вводить буквы)
    За это забыл, просто капчу другую поставил, а тут правила такие прописаны)
     
  8. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.745
    Симпатии:
    1.321
    Адрес:
    Лень
    !empty($_POST['captcha']) != $_SESSION['captcha']
    условие от бога
    true != true
     
  9. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @MouseZver
    а что не так в условии, покажи как бы ты сделал его?
     
  10. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.745
    Симпатии:
    1.321
    Адрес:
    Лень
    уже проверил 9 строка
    11:
    $_POST['captcha'] != $_SESSION['captcha']
     
    _ne_scaju_ нравится это.
  11. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @MouseZver
    А я понял, я убрал, уже когда исправлял)
    Итоговый результат:
    PHP:
    1. /*Проверяем код с картинки*/
    2. if(empty($_POST['captcha'])){
    3. $err[] = 'Капча не может быть пуста<br>';
    4. }
    5. elseif($_POST['captcha'] != $_SESSION['captcha']){
    6. $err[] = 'Ошиблись при вводе капчи';
    7. }else{
    8.     echo 'vse horosho<br>';
    9. }
    Спасибо, за обсуждения, за совет что сессию, сперва запустить надо, было)
    Тему можно прикрывать, вопрос решен!