О web-разработке
и даже немного больше...

Использование капчи в Bitrix

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

// подключаем файл модуля капчи
include_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/classes/general/captcha.php");

// создаем объект капчи
$cpt = new CCaptcha();

// достаем значение параметра captcha_password из главного модуля
$captchaPass = COption::GetOptionString("main", "captcha_password", "");

// если строка пуста, генерируем случайное значение
If (strlen($captchaPass) <= 0){
	$captchaPass = randString(10);
	COption::SetOptionString("main", "captcha_password", $captchaPass);
}

$cpt->SetCodeCrypt($captchaPass);

Обратите внимание на первую строчку в коде, где подключается файл модуля капчи – captcha.php. Если ранее уже подключался пролог, то подключать данный файл не нужно.
 
Размещаем поля на форме. Поля должны находиться строго после кода указанного выше, т.к. используется переменная с объектом класса CCaptcha, инициализированная ранее.

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

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

if($APPLICATION->CaptchaCheckCode($_POST["captcha_word"], $_POST["captcha_code"])){
	echo 'Всё верно!';
} else {
	echo 'Неправильно введен код с картинки!';
}

На этом вроде всё. Капча может быть использована в любой части сайта, важным условием является предварительное включение файла модуля. В системе битрикс модули подгружаются автоматически при подключении пролога в исполняемом скрипте. Существует возможность использования модулей битрикса без подключения пролога, практикуется зачастую для обработки ajax-запросов, и не только, где нет необходимости в подгрузке шаблона сайта, и его составляющих.

Опубликован: 09.11.2014 г.

См. также:

«Не удалось установить соединение с сервером. Проверьте …».
Получение Email-адреса покупателя в заказе (Bitrix D7)
Работа с URL-адресами в Bitrix D7
Работа с купонами в Bitrix API
Добавляем пункт меню для списков в админке Битрикс
Диалоговые окна в Bitrix API
Создание инфоблока при установке модуля
Создание копии корзины из заказа на Bitrix D7

Комментарии

  1. Максим пишет:

    В форме не отображается картинка с капчей

  2. Мария пишет:

    Спасибо большое, редко встречается полностью рабочее решение задачи так детально прописанное.
    Установка капчи заняла 30 секунд.

  3. Константин пишет:

    А как несколько форм с капчей добавить на страницу?

  4. Константин пишет:

    А как несколько форм с капчей добавить на страницу?

  5. htmaker пишет:

    Можно попробовать (не проверял) создать два экземпляра класса, генерировать отдельный код для каждой капчи, сохранять параметры под разными именами, например: captcha_password_1, captcha_password_2

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Комментарии
  • Загрузка...
Друзья сайта