Пример использования капчи от гугла третьей версии
Необходимо получить секретный и публичные ключи в сервисе "гугла" тут:
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>
< script>
var onloadCallbackRecap = function () {
grecaptcha.ready(function () {
grecaptcha.execute('XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', {
action: 'contact_callback'
}).then(function (token) {
var recaptchaResponse = document.getElementById('recaptchaResponse');
recaptchaResponse.value = token;
});
});
};
< /script>
Стилистика для скрытия лейбла
.grecaptcha-badge{
display: none!important;
}
← Назад