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

Защита веб-форм

00 голосов
3
Здравствуйте!
Подскажите, пожалуйста, как защитить веб-формы от автоматического заполнения, чтобы было так же, как и при регистрации пользователя необходимо было ввести символы на картинке. Я так понял что это в Битрикс CAPTCHA, но как поставить ее на веб-форму? Сейчас доступ ограничен правами пользователя, то есть если он зарегистрирован, он может заполнить форму, а если нет, то ему выдается сообщение "Не хватает прав доступа к веб-форме. Пожалуйста, зарегистрируйтесь".
спросил 07 Янв, 14 от Dust (160 баллов)

3 Ответы

00 голосов
Кастомизировать компоненту:

form/result_new/default.php

Исходную можно обычно можно взять тут:

/bitrix/modules/form/install/templates/result_new/default.php, скопировать к себе в шаблон в директорию form/result_new/default.php, добавить вывод captcha и добавить проверку в районе кода:

Код
$error = CForm::Check($WEB_FORM_ID, $arrVALUES);
if (strlen($error)<=0)
ответил 15 Апр, 14 от krivedko (500 баллов)
00 голосов
Цитата
Андрей Мирошниченко пишет:
добавить вывод captcha

А как дабавить то вывод captcha? Где сам код взять (какой он)?
ответил 08 Авг, 14 от Dust (160 баллов)
00 голосов
Код вывода CAPTCHA:

Код
<?
$capCode = $GLOBALS["APPLICATION"]->CaptchaGetCode();
?>
<input type="hidden" name="captcha_sid" value="<?= htmlspecialchars($capCode) ?>">
<img align="left" src="/bitrix/tools/captcha.php?captcha_sid=<?= htmlspecialchars($capCode) ?>" width="180" height="40">
<input type="text" name="captcha_word" size="30" maxlength="50" value="">


Функция для проверки кода:
Код
function CaptchaCheckCode($captcha_word, $captcha_sid)
{
    include_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/classes/general/captcha.php");

    $cpt = new CCaptcha();
    return $cpt->CheckCode($captcha_word, $captcha_sid);
}


Использовать функцию например так:
Код
extract($_POST, EXTR_SKIP);
if (!CaptchaCheckCode($captcha_word, $captcha_sid) && ($ID == 0)) {
ShowMessage('Введен неправильный регистрационный код');
}
ответил 12 Дек, 14 от krivedko (500 баллов)

Похожие вопросы

0 голосов
4 ответов
спросил 01 Сен, 13 от SleepWalk (120 баллов)
0 голосов
6 ответов
спросил 25 Фев, 13 от Asuma (160 баллов)
0 голосов
0 ответов
0 голосов
0 ответов
спросил 15 Март, 14 от PriestD (100 баллов)