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 } }
Добавить комментарий