Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Возникли недопонимания с CaptchaCheckCode

00 голосов
6
Всем привет.
Делаю форму с капчей (прмерно как тут http://dev.1c-bitrix.ru/community/forums/forum6/topic27270/). Форма реализована с помощью компонента bitrix:iblock.element.add.form.
Перед отправкой формы, я делаю проверку на правильность ввода капчи через аякс метод (jquery метод ajax).
Php скрипт (который зовется методом ajax), который проверяет правильность ввода капчи, проверяет все верно.
Как только проверка на клиентской части закончилась верно (jquey ajax), продолжает выполняться метод submit формы. В моем случае - происходит добавление инфоблока. Но почему-то, после выполнениязавершения загрузки страницы, выходит сообщение "Неверно введено слово с картинки".
Почему так?
спросил 25 Авг, 13 от wogich (630 баллов)

6 Ответы

00 голосов
Потому что удаляется соответствующая запись из базы после успешной проверки капчи, а значит, становится неверной при повторном постинге.
ответил 25 Авг, 13 от Delp (7,220 баллов)
00 голосов
Цитата
Sergey Leshchenko пишет:
Потому что удаляется соответствующая запись из базы после успешной проверки капчи, а значит, становится неверной при повторном постинге.


А как решить тогда данную проблему Вы знаете? Помогите пожалуйста.
ответил 07 Ноя, 13 от wogich (630 баллов)
00 голосов
Если компонент, принимающий и проверяющий в конечном итоге форму, не ваш, то самый простой способ - это проверять капчу при аякс-запросе не методом CCaptcha::CheckCaptchaCode(), а своим, фактически полной копией системного, но без CCaptcha::Delete($sid);
ответил 14 Фев, 14 от Delp (7,220 баллов)
00 голосов
Цитата
Sergey Leshchenko пишет:
Если компонент, принимающий и проверяющий в конечном итоге форму, не ваш, то самый простой способ - это проверять капчу при аякс-запросе не методом CCaptcha::CheckCaptchaCode(), а своим, фактически полной копией системного, но без CCaptcha::Delete($sid);


Да, спасибо. Сделал по другому - в итоге хватило одной проверки при аяксе. Приходится верить в поддержку JS у пользователей =)
Спасибо за Ваш ответ - буду знать на будущее.
ответил 04 Июнь, 14 от wogich (630 баллов)
00 голосов
Марат
И зачем такая капча нужна? Чтобы усложнить жизнь пользователю? Ведь хакеру плёвое дело обойти любые проверки, осуществляемые на клиентской стороне и зафлудить сайт.
ответил 02 Окт, 14 от KHOnKA (160 баллов)
00 голосов
Код
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include.php");

$res = $DB->Query("SELECT CODE FROM b_captcha WHERE ID = '".$DB->ForSQL($_REQUEST["captcha_sid"],32)."'");
$ar = $res->Fetch(); 
if ($ar["CODE"]!=strtoupper($_REQUEST["captcha_word"]))
{echo "Ошибка ввода капчи";}
    else {echo "Капча введена верно";}


ответил 04 Фев, 15 от Hax (1,100 баллов)

Связанных вопросов не найдено