SITE_KEY и SECRET_KEY необходимо получить с сервиса google
Устанавливаем токен на все формы с классом
ts-recapcha-response
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Recapcha Test</title>
</head>
<body>
<h2>Форма 1</h2>
<form action="send.php" method="POST">
<input type="text" name="name" />
<input type="hidden" class="ts-recaptcha-response" name="g-recaptcha-response" />
<button>Отправить</button>
</form>
<h2>Форма 2</h2>
<form action="send.php" method="POST">
<input type="text" name="name" />
<input type="text" class="ts-recaptcha-response" name="g-recaptcha-response" />
<button>Отправить2</button>
</form>
<script src="https://www.google.com/recaptcha/api.js?render=<SITE_KEY>"></script>
<script>
// Установка токена на все формы
grecaptcha.ready(function() {
grecaptcha.execute('<SITE_KEY>', {action: 'homepage'}).then(function(token) {
//console.log(token);
const allRecapcha = document.querySelectorAll('.ts-recaptcha-response');
allRecapcha.forEach(item => item.value = token);
});
});
</script>
</body>
</html>
Проверяем качество отправленных данных в файле
send.php
// Объявляем константу
define('SECRET_KEY', '<SECRET_KEY>');
if($_POST){
function getCaptcha($token) {
$response = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret={$secretKey}&response={$token}");
return json_decode($response);
}
$result = getCaptcha($_POST['g-recaptcha-response']);
if($result->success == true && $result->score > 0.5){
// Код отправки вашей формы
}
else {
// Сообщение о некачественно заполненных данных
// Сюда попадает в том случае если пользователь/робот не прошел проверку recapcha v3
}
}

Добавить комментарий