Подключение CAPTCHA

Урок 137 из 258
Автор: Анна Кокина
Сложность урока:
2 уровень - несложные понятия и действия, но не расслабляйтесь.
2 из 5
Просмотров: 93331
Дата изменения: 13.12.2024
Недоступно в лицензиях:
Текущую редакцию Вашего 1С-Битрикс можно просмотреть на странице Обновление платформы (Marketplace > Обновление платформы).
Ограничений нет

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

  В настройках
  модуля

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

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

  В параметрах
  компонента

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

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

  Настройка показа
  в форме авторизации

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

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

Это происходит потому, что при последовательном неправильном наборе пары логин/пароль и при малом значении в поле Количество попыток ввода пароля до показа 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	?>

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


Нам жаль это слышать… Но мы постараемся быть лучше!

Мы благодарны Вам за помощь в улучшении документации.

Спасибо, мы рады что смогли помочь Вам. Ниже Вы можете оставить свой отзыв или пожелание :)
Мы стараемся сделать документацию понятнее и доступнее,
и Ваше мнение важно для нас
Курсы разработаны в компании «1С-Битрикс»