Просмотров: 13507 (Статистика ведётся с 06.02.2017)
Дата последнего изменения: 27.10.2019
Анна Кокина
Сложность урока:
2 уровень - несложные понятия и действия, но не расслабляйтесь.
1
2
3
4
5
Недоступно в редакциях:
Ограничений нет

После настройки основных параметров необходимо подключить CAPTCHA. Существует несколько вариантов подключения:

Подключение CAPTCHA в настройках модуля

В ряде модулей (Главный, Блоги, Wiki и других) CAPTCHA подключается прямо в настройках модуля. Например, опция Использовать CAPTCHA при регистрации в настройках Главного модуля позволяет включить использование CAPTCHA при регистрации новых пользователей:

Настройки главного модуля

Подключение CAPTCHA в параметрах компонента

CAPTCHA возможно подключить и для отдельных компонентов Обычно настройки CAPTCHA в параметрах компонента используются для неавторизированных пользователей. , например, Добавление элементов инфоблока (комплексный компонент), Каталог (комплексный компонент) и других. Рассмотрим пример использования CAPTCHA в компоненте Форма обратной связи, где опция Использовать защиту от автоматических сообщений (CAPTCHA) для неавторизованных пользователей позволяет включить CAPTCHA только для данного компонента:

Параметры компонента "Форма обратной связи"

Настройка показа CAPTCHA в формах

Использование CAPTCHA в формах создания/редактирования ограничивается в политике безопасности группы пользователей. Опция Количество попыток ввода пароля до показа CAPTCHA позволяет задать количество неправильных попыток ввода пароля, после которых будет в форме авторизации выводиться CAPTCHA для пользователя из соответствующей группы:

Внимание! Если в шаблоне компонента не предусмотрен вывод CAPTCHA, то возможна ситуация, когда система (при малом значении в поле Количество попыток ввода пароля до показа CAPTCHA) как бы "забывает" пароль пользователя не давая ему авторизоваться в системе. При этом при входе в административную часть (ваш_сайт/bitrix/admin/) авторизация осуществляется.

Это происходит потому, что при последовательном неправильном наборе пары логин/пароль и при малом значении в поле Количество попыток ввода пароля до показа CAPTCHA) система ждёт ввода верного кода CAPTCHA. А пользователь этого не делает, так как шаблон не предусматривает вывод CAPTCHA.

Подключение CAPTCHA в своих скриптах, модулях или компонентах

Для начала создайте саму CAPTCHA :

01      <?include_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/classes/general/captcha.php");
02	$cpt = new CCaptcha();
03	$captchaPass = COption::GetOptionString("main", "captcha_password", "");
04	if(strlen($captchaPass) <= 0)
05	{
06	    $captchaPass = randString(10);
07	    COption::SetOptionString("main", "captcha_password", $captchaPass);
08	}
09	$cpt->SetCodeCrypt($captchaPass);
10	?>

После этого выводите в нужном месте формы три элемента: скрытое поле со сгенерированным кодом, поле для ввода капчи пользователем и саму картинку.

<input name="captcha_code" value="<?=htmlspecialchars($cpt->GetCodeCrypt());?>" type="hidden">
<input id="captcha_word" name="captcha_word" type="text">
<img src="/bitrix/tools/captcha.php?captcha_code=<?=htmlspecialchars($cpt->GetCodeCrypt());?>">

В скрипте, на который сабмитится форма, добавьте проверку:

01      <?
02      if(!$APPLICATION->CaptchaCheckCode($_POST["captcha_word"], $_POST["captcha_code"]))
03	{
04	    // Неправильное значение
05	}
06	else
07	{
08	    // Правильное значение
09	}
10	?>

Документация по теме:


13


Курсы разработаны в компании «1С-Битрикс»