Доброго времени суток, друзья! В этой статье я постараюсь подробно рассказать о процессе установки и настройки самой лучшей капчи от Google. Почему самой лучшей? Потому что к черту ввод циферок с картинок и прочие ужасы, спасибо большое нашему «старшему брату» за новую технологию. Клик, и ты не робот.
Речь пойдет о второй, улучшенной версии ReCaptcha. После обновления значительно упростился процесс проверки на стороне сервера, больше не нужно подключать целую библиотеку, разбираться в ней и прочее. Единственная сложность в том, что мне показалась недостаточной инструкция с официального сайта, поэтому пришлось немного поколдовать. Но в итоге я понял принцип установки и готов им поделиться.
Получение API ключей от Google
Прежде всего нужно добавить один или несколько своих сайтов в систему. Эта процедура абсолютно бесплатная, и это прекрасно. Заходим на страничку регистрации по ссылке. Сразу видим перед собой форму.
Придумываем название и добавляем сайты, без «http://», только домены. Зеркала с «www.» добавлять не нужно, он найдет их сам.
Google выдает нам ключ и секретный ключ, который на то и секретный, чтобы его никому не сообщали. С этими ключами переходим к установке капчи на сайт.
Установка рекапчи на стороне клиента
Другими словами, вставляем саму капчу в форму на сайте. Google делится вполне ясной и понятной инструкцией по этому поводу. В HTML коде используется ваш ключ(не секретный).
Например, вот так
1 2 3 4 5 6 7 8 9 10 |
<form method="post"> <input type="text" name="email"> <input type="text" name="url"> <div class="g-recaptcha" data-sitekey="ВАШ_КЛЮЧ"></div> <input type="submint" name="sub_but"> </form> <script src='//www.google.com/recaptcha/api.js'></script> |
API можно подключать в любом месте документа, не обязательно в <head> или сразу после формы, как сделал это я.
На этом легкая часть закончилась.
Интеграция с сервером
Другими словами, добавляем код проверки результатов рекапчи. Код будем писать на php, в том месте, где у вашего сайта происходит проверка введенных с формы данных.
На пример, для WordPress — это файл wp-comments-post.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 36 37 38 |
//Получаем пост от recaptcha $recaptcha = $_POST['g-recaptcha-response']; //Сразу проверяем, что он не пустой if(!empty($recaptcha)) { //Получаем HTTP от recaptcha $recaptcha = $_REQUEST['g-recaptcha-response']; //Сюда пишем СЕКРЕТНЫЙ КЛЮЧ, который нам присвоил гугл $secret = 'ВАШ_СЕКРЕТНЫЙ_КЛЮЧ'; //Формируем utl адрес для запроса на сервер гугла $url = "//www.google.com/recaptcha/api/siteverify?secret=".$secret ."&response=".$recaptcha."&remoteip=".$_SERVER['REMOTE_ADDR']; //Инициализация и настройка запроса $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_TIMEOUT, 10); curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.16) Gecko/20110319 Firefox/3.6.16"); //Выполняем запрос и получается ответ от сервера гугл $curlData = curl_exec($curl); curl_close($curl); //Ответ приходит в виде json строки, декодируем ее $curlData = json_decode($curlData, true); //Смотрим на результат if($curlData['success']) { //Сюда попадем если капча пройдена, дальше выполняем обычные //действия(добавляем коммент или отправляем письмо) с формой } else { //Капча не пройдена, сообщаем пользователю, все закрываем стираем и так далее } } else { //Капча не введена, сообщаем пользователю, все закрываем стираем и так далее } |
Заключение
Слава богу, дело сделано, и количество спама должно резко снизиться. У этой капчи очень классная система, она дает задание только в том случае, когда не может точно понять, что перед ней реальный человек. Хочу разобраться в том, как она это делает. А задания открываются в маленьком окошке, что не требует перезагрузки страницы. Одни плюсы, мне очень нравится, всем советую ее устанавливать!