Показать сообщение отдельно
  #8 (permalink)  
Старый 22.10.2019, 06:49
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от joyandjoy
Кажется, я не правильно
Это разве меняет логику, которая у вас в корне не верна?

Вот код что я давал:

<?
session_start();
//каптча
$_SESSION['check'] = rand(1, 9);
//обработка запроса
if(isset($_POST['test'])) exit('input: '.$_POST['test'].', check: '.$_SESSION['check']);
?>


Во-первых, и что понятно, он обязательно должен быть до вывода в браузер. Во-вторых, если сначала готовится каптча, сохраняется в сессии, а следующей операцией, это проверка равенства ее с вводом, то при каждом запросе клиента значение каптчи будет перезаписываться еще до проверки. Такая же неверная логика в коде и у вас, как может работать сначала:

$_SESSION['res'] = $f_color['1'] + $s_color['1'];

а затем:

if (trim(strip_tags($_POST['result'])) == $_SESSION['res']) ?

Верно, это:

<?
session_start();
//обработка запроса, с обязательным прекращением работы скрипта - exit
//иначе клиенту будет вывален код всей страницы
if(isset($_POST['test'])) exit('input: '.$_POST['test'].', check: '.$_SESSION['check']);
//каптча
$_SESSION['check'] = rand(1, 9);
?>


Либо, каптча готовится отдельным скриптом, к которому клиент обращается при загрузке страницы.

Сообщение от joyandjoy
Если у кнопки отобрать name="send_comments", то комментарий не отправляется
Я же спрашиваю, проверка каптчи это отдельная операция на разрешение отправления формы или нет? Если да, то делать нужно не так. Если вам нужен подобный вариант, то задействуйте уже готовое - recaptcha.

Для проверки каптчи не нужно никакого фильтра, достаточно проверки ввода с сохраненным на сервере. А вот для всего остального требуется фильтрация.
Ответить с цитированием