Как добавить гугл-капчу (reCaptcha) в форму?
- Добавить сайт в личном кабинете ReCaptcha ;
- Получаете 2 ключа(публичный и приватный);
- Скачиваете библиотеку ReCaptcha ;
- Подключаете скаченную библиотеку на ваш сайт. Для этого берете только файлы из директории /src/, файл autoload.php и директорию ReCaptcha и копируете их в /bitrix/php_interface/include/ (при отсутствии include, создаете её);
- В init.php (находится в /bitrix/php_interface/init.php) подключаете ReCaptcha, добавляя
init.php может отсутствовать. Тогда создайте пустой файл с названием init.php на пк и загрузите его.
Не рекомендуется создавать его как страницу. Тогда битрикс запишет в него стандартную разметку и сайт перестанет открываться.
- В шаблоне сайта подключаете скрипт
; - В шаблоне компонента формы(template.php1) добавляете (Как найти component.php и template.php?)
; - В компоненте формы(component.php1) добавляете проверку (Как найти component.php и template.php?)
1В шагах 7 и 8 файлы component.php и template.php - это файлы нужного вам компонента, куда хотите внедрить капчу.
Например /bitrix/components/simai/feedback.all.string/component.php и /bitrix/components/simai/feedback.all.string/templates/.default/template.php
В некоторых компонентах стандартная капча может быть вшита в код и не иметь возможности отключения через настройки. В таком случае необходимо убрать в коде(в шаблоне и компоненте) капчу битрикс и добавить на проверку в компоненте капчу от гугл.
Например:
Шаблон /bitrix/components/simai/sf.feedback.appeal/templates/.default/ template.php
Там убрать примерно такой блок:
Компонент: /bitrix/components/simai/sf.feedback.appeal/component.php
Там убрать примерно такой блок:
if (!grecaptcha.getResponse()) {
console.log('captcha not yet completed.');
event.preventDefault(); //prevent form submit
grecaptcha.execute();
} else {
console.log('form really submitted.');
}
});