Подключение Google reCAPTCHA через модуль twim.recaptchafree
Установка модуля
Для реализации защиты форм с помощью Google reCAPTCHA используем модуль twim.recaptchafreetwim.recaptchafree из маркетплейса 1С-Битрикс.
Установить модуль через админку Битрикса или из маркетплейса.
Перейти в настройки модуля (Настройки > Настройки продукта > Модули > TWIM: ReCaptchaFree) и ввести публичный и секретный ключи, полученные от Google:
Получить ключи можно на сайте: https://www.google.com/recaptcha/admin
Модуль поддерживает только v2 reCAPTCHA (галочка "Я не робот").
Автоматическое подключение капчи
Если используется стандартный компонент формы Битрикса (bitrix:main.feedback, bitrix:main.register, и др.), достаточно в параметрах компонента установить:
"USE_CAPTCHA" => "Y"
В этом случае модуль автоматически заменит стандартную капчу на Google reCAPTCHA.
Ручное подключение капчи в форму
Если нужно вручную внедрить капчу в кастомную форму:
Получить публичный ключ из настроек модуля:
Добавить в HTML-форму следующую строку:
<div class="g-recaptcha" data-sitekey="<?=htmlspecialchars($publicKey, ENT_QUOTES)?>"></div>
Не забыть подключить скрипт Google reCAPTCHA на странице:
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
Подключение скрипта https://www.google.com/recaptcha/api.jshttps://www.google.com/recaptcha/api.js должно происходит в header-e компонента.
В рамках выполнения задачи на проекте mixi.kzmixi.kzmixi.kz данный код использовался по данным путям:
/bitrix/templates/xiaomi/parts-templates/pop-ups/one-click.php
/bitrix/templates/.default/components/bitrix/system.auth.form/popupAuth/template.php
/bitrix/templates/.default/components/bitrix/system.auth.authorize/flat/template.php
Серверная проверка капчи (бэкенд)
Обязательный шаг — проверка ответа капчи на сервере до отправки данных формы.
Пример проверки:
В рамках выполнения проекта данный код использовался по данным путям:
/bitrix/templates/.default/components/bitrix/system.auth.form/popupAuth/template.php
/bitrix/templates/.default/components/bitrix/system.auth.authorize/flat/template.php
/bitrix/templates/.default/assets/es6/edit.jsedit.js
/local/components/api/reviews.form/templates/.default/script.jsscript.js
Где должна происходить проверка?
Проверку нужно выполнять на серверной стороне, до сохранения или обработки формы (например, до отправки письма или записи в БД). Фронтенд может лишь визуально отобразить капчу, но её валидность должен проверять только сервер.