В этой статье будет показываться установка Google reCaptcha v3 в PHP, это нужно для проверки, что ваш посетитель сайта, не робот.
Также у нас есть статья о том, как подключить Google reCaptcha v2 в PHP, посмотрите и её.
Получение API ключей:
Сначала надо получить ключ для работы с Google reCaptcha, для этого заходим на сайт Google reCAPTCHA, и там нажимаем на кнопку «Admin console».
После, настраиваем капчу, настраиваем так, как из скриншота ниже.
Давайте не много разберём, первым делом мы пишем название ярлыка, если грубо говоря, то это название для нашей капчи, потом выбираем тот тип, который нам нужен, в нашем случае reCaptcha v3, дальше вводим домен своего сайта и email, если надо, ну и ставим везде галочки, нажимаем в самом нижу кнопку «ОТПРАВИТЬ».
Когда нажали кнопку, если всё правильно, у вас должно появится, что-то, типа этого.
Если всё так, то всё хорошо.
HTML:
С HTML всё просто, вот он.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <html lang="ru"> <head> <title>Google reCAPTCHA</title> <meta charset="utf-8"> <script src='https://www.google.com/recaptcha/api.js?render=Ключ_для_сайта'></script> </head> <body> <form method="POST" action="Путь до вашего PHP"> <p>Введите комментарий:</p> <p><textarea name="comment" rows="2" cols="40"></textarea></p> <input id="token" type="hidden" name="token"> <p><input type="submit" value="Отправить"></p> </form> <script> grecaptcha.ready(function() { grecaptcha.execute('Ключ_для_сайта', {action: 'homepage'}).then(function(token) { document.getElementById('token').value = token }); }); </script> </body> |
Здесь вас может заинтересовать две вещи, первое, это подключённый скрипта в хедер, это грубо говоря подключение библиотеки, для получения токина, второй, это код в самом низу файла, нужен для получения самого токина.
Давайте разберём код в низу, мы с помощью его получаем токин, и если всё хорошо, то его присваиваем нашему не видимому <input>
данные которого будут тоже отправляться при отправки формы.
PHP:
В PHP всё интереснее, суть программы будет в том, что мы отправляем данные секретного ключа и токин, и возвращается массив, с данными запроса, вот код.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | $sicret_key = 'секретный ключ'; // Функция для получения данных reCaptcha function returnReCaptcha($token, $sicret_key) { // URL куда отправлять токин и секретный ключ $url = 'https://www.google.com/recaptcha/api/siteverify'; // Параметры отправленных данных $params = [ 'secret' => $sicret_key, // Секретный ключ 'response' => $token, // Токин 'remoteip' => $_SERVER['REMOTE_ADDR'], // IP-адрес пользователя ]; // Делаем запрос $ch = curl_init($url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $params); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Отправляем запрос $response = curl_exec($ch); // Возвращаем массив полученных данных return json_decode($response, true); } // Проверка, что есть POST запрос if ($_POST) { echo '<pre>'; print_r(returnReCaptcha($_POST['token'], $sicret_key)); // Вывод данных массива echo '</pre>'; } |
Разберём код, в начале мы объявляем наш секретный ключ, дальше создаётся функция для отправки и получения подтверждения капчи.
Внутри функции объявляем перемеренную $url
, со значение куда отправлять запрос и массив $params
с токином, ключом и с IP-адресом, с которого пользователь просматривает текущую страницу.
Дальше создаём запрос и настраиваем его, с помощью стандартной PHP библиотеки CURL, тут я не буду рассказывать как с ней, потому что очень много объяснять, если интересно, то зайдите в документацию по ней.
После настройки, отправляем запрос, с помощью curl_exec()
и получаем ответ, его декодируем в массив благодаря json_decode()
, полученный массив возвращаем.
После функции, идёт проверка, что есть запрос типа POST, если верно, то объявляем функцию returnReCaptcha()
, передаём ей токин и секретный ключ, одно временно с этим выводим что она возвращает, у вас должно быть что типа этого.
Самый главное значение тут, это success, если он равен один, то всё хорошо, если ноль, то значит какая-то ошибка, дальше можете просто сделать условие проверки этого значения в массиве и зависимо от результата, делать то или иное действие например так.
1 2 3 4 5 | if (res['success'] === 1){; // Обрабатываем данные формы, которая защищена капчей } else { // Прописываем действие, если пользователь оказался ботом } |
На этом всё.
Вывод:
В этой статье было показана как установить Google reCaptcha v3 в PHP, если вам что-то не понятно, то зайдите в документацию по reCaptcha.