Google рекапча 2 версии для форм обратной связи Битрикс

https://tretyakov.net/post/podklyuchaem-recaptcha-2-k-formam-1s-bitriks/

Шаг 1.

Регистрируем домен на сайте https://www.google.com/recaptcha/admin/ и получаем 2 ключа (ключ сайта и секретный ключ).

Шаг 2.

В header.php вашего шаблона добавляем:

<script src="https://www.google.com/recaptcha/api.js" async defer></script>

Шаг 3.

Заходим в шаблон формы, ищем где подключается стандартная капча и меняем все на:

<div class="g-recaptcha" id="g-recaptcha" data-sitekey="6LexQ88UAAAAAGPs1eC9GFv0thZ7bH56456456YbEU"></div>

"sitekey" — это ключ сайта полученный при регистрации.

Шаг 4.

Теперь в файл init.php добавляем код (не забудьте заменить секретный ключ, на тот который получили при регистрации):

function my_onBeforeResultAdd($WEB_FORM_ID, &$arFields, &$arrVALUES)
	{
	    global $APPLICATION;
	
	    if ($_REQUEST['g-recaptcha-response']) {
	        $httpClient = new \Bitrix\Main\Web\HttpClient;
	        $result = $httpClient->post(
	            'https://www.google.com/recaptcha/api/siteverify',
	            array(
	                'secret' => '6LexQ88UAsAAAAOl0oOlZaqddfedsrwt5Re2K3KO2V',
	                'response' => $_REQUEST['g-recaptcha-response'],
	                'remoteip' => $_SERVER['HTTP_X_REAL_IP']
	            )
	        );
	        $result = json_decode($result, true);
	        if ($result['success'] !== true) {
	            $APPLICATION->throwException("Вы не прошли проверку");
	            return false;
	        }
	    } else {
	        $APPLICATION->ThrowException('Вы не прошли проверку');
	        return false;
	    }
	}
	
AddEventHandler('form', 'onBeforeResultAdd', 'my_onBeforeResultAdd');
Show CommentsClose Comments

Leave a comment