Неверная google recaptcha. Новая reCaptcha от Google

От автора: создавая сайты или различные веб-приложения, на страницах которых в публичном доступе присутствует форма отправки некоторых данных, всегда необходимо заботиться о защите от нежелательных сообщений, то есть спама. В данный момент есть достаточно много всевозможных способов блокирования спам сообщений, но самый простой и надежный – это, конечно же, каптча, которая известна практически всем пользователям интернета. При этом, каптчи бывают различных видов графические, текстовые, математические, вопрос-ответ и т.д. Но в уроке Новая reCaptcha от Google мы поговорим о каптче от сервиса Google, под названием reCaptcha, которая реализует достаточно хороший барьер от спам сообщений на Вашем сайте. К тому же недавно вышла новая версия данной каптчи, поэтому давайте посмотрим, как с ней работать.

Установка каптчи reCaptcha

Итак, давайте перейдем на официальный сайт каптчи reCaptcha, http://google.com/recaptcha . При, этом хотел бы заметить, что Вам потребуется учетная запись сервиса Google, поэтому зарегистрируйтесь, если у Вас нет учетной записи и выполните авторизацию.

При этом заполняем следующие поля:

Название – в данном поле прописываем название сайта.

Домены – указываем домен, на котором будет использоваться каптча. Так же разрешается указать несколько доменов, при этом каждый домен необходимо вводить с новой строки.

Владельцы – в данном поле перечисляем почтовые ящики владельцев каптчи (по одному в строке).

Затем для завершения регистрации кликаем по кнопке Регистрация. После этого сервис Google сгенерирует два ключа, которые необходимы для работы каптчи:

Публичный ключ – который необходим для отображения блока каптчи.

Секретный ключ – который необходим для проверки правильности отправки каптчи. При этом секретный ключ должен хранится только на сервере и не должен быть доступен для всеобщего обозрения.

Для отображения каптчи, необходимо подключить библиотеку reCapthca на странице где она должна быть отображена:

Затем в месте, где должна отображаться каптча, добавляем следующий блок:

< div class = "g-recaptcha" data - sitekey = "6LfyBhATAAAAAOoLy4thSKZLkmcosy_mkjnpqxkG" > < / div >

При этом в атрибуте data-sitekey блока div должен храниться публичный ключ. После этого переходим в браузер и обновляем тестовую страницу.

Теперь reCaptcha отображается на тестовой странице, но при этом защита от спама еще не завершена, так как данную форму можно отправить и не активируя чекбокс каптчи. А значит, необходимо на стороне сервера,в скрипте обработчике формы, осуществить проверку, на правильность заполнения каптчи.

Интеграция каптчи на стороне сервера

Первым делом давайте посмотрим, какие данные мы получим в скрипте обработчике после успешной активации чекбокса каптчи. Для этого, в скрипте обработчике формы, распечатаем на экран данные суперглобального массива POST.

print_r($_POST);

print_r ($ _POST ) ;

При этом на экране мы увидим следующее.

То есть в суперглобальном массиве POST в ячейке g-recaptcha-response, содержится код, который возвращает сервис Google после активации чекбокса каптчи, если же чекбокс не активирован то данная ячейка будет пуста. При этом код представляет собой определенную последовательность символов, которую нам ни как не прочитать. Поэтому далее необходимо отправить POST запрос по следующему адресу: https://www.google.com/recaptcha/api/siteverify

И отправить следующие параметры:

secret — секретный ключ, который был сгенерирован при регистрации пользователя;

response — код, который был получен при активации чекбокса каптчи;

remoteip – IP адрес, с которого отправляется форма.

Для отправки запроса, по указанному запросу используем curl – соединение: