Google reCAPTCHA v3

06.06.2021 | 346 | Bitrix Laravel

Пример использования капчи от гугла третьей версии

Необходимо получить секретный и публичные ключи в сервисе "гугла" тут:
https://www.google.com/recaptcha/admin/

Серверная (бэкендовая) часть:
$recaptcha_key = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
$recaptcha_url = 'https://www.google.com/recaptcha/api/siteverify';
$recaptcha_params = [
  'secret' => $recaptcha_key,
  'response' => $_POST['recaptcha_response'],
  'remoteip' => $_SERVER['REMOTE_ADDR'],
];
$ch = curl_init($recaptcha_url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $recaptcha_params);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
if (!empty($response)) {
  $decoded_response = json_decode($response);
}
$recaptcha_success = false;
if ($decoded_response && $decoded_response->score > 0) {
  $recaptcha_success = $decoded_response->score;
  $arResult["TYPE"] = "OK";
} else {
  $arResult["TYPE"] = "ERROR";
}
Фронтовая (шаблонная часть):
< input type="hidden" name="recaptcha_response" id="recaptchaResponse">
 < script src="https://www.google.com/recaptcha/api.js?
onload=onloadCallbackRecap&render=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" async defer>
 < script>
   var onloadCallbackRecap = function () {
     grecaptcha.ready(function () {
       grecaptcha.execute('XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', {
         action: 'contact_callback'
       }).then(function (token) {
         var recaptchaResponse = document.getElementById('recaptchaResponse');
         recaptchaResponse.value = token;
       });
     });
   };
 
Стилистика для скрытия лейбла
.grecaptcha-badge{
  display: none!important;
}

← Назад

Комментарии (0)