Новая reCaptcha от Google

Новая reCaptcha от Google

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

скачать исходникискачать урок

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

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

Далее, переходим по ссылке Get reCaptcha и регистрируем каптчу для сайта, на котором она будет использоваться.

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

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

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

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

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

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

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

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

<script src='https://www.google.com/recaptcha/api.js'></script>

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

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

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

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

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

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

print_r($_POST);

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

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

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

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

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

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

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

<?php

if($_SERVER['REQUEST_METHOD'] == 'POST') {
	if(empty($_POST['g-recaptcha-response'])) {
		exit('Empty captcha');
	}
	
	$url = 'https://www.google.com/recaptcha/api/siteverify';

	$secret = '6LfyBhATAAAAAOqfj4RXNmRV5RV_8SIN-S95wl1U';
	$recaptcha = $_POST['g-recaptcha-response'];
	$ip = $_SERVER['REMOTE_ADDR'];
	
	$url_data = $url.'?secret='.$secret.'&response='.$recaptcha.'&remoteip='.$ip;
	$curl = curl_init();
	
	curl_setopt($curl,CURLOPT_URL,$url_data);
	curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,FALSE);
	
	curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
	
	
	$res = curl_exec($curl);
	curl_close($curl);
	
	$res = json_decode($res);
	
	if($res->success) {
		echo 'YES';
	}
	else {
		exit('Error');
	}
	
}

Выполнив запрос, сервис Google вернет результат в виде строки формата JSON, в которой содержится объект, в структуре которого содержится свойство success. Если значение данного свойства равно TRUE, значит каптча — активирована верно и сообщение отправил пользователь, а не спам-робот. В противном же случае сообщение отправил спам-робот.

На этом данный урок завершен. Всего Вам доброго и удачного кодирования.

Создание диаграмм с помощью Google Chart

Прямо сейчас посмотрите курс по созданию диаграмм с помощью Google Chart!

Смотреть курс

Метки: ,

Комментарии Вконтакте:

Комментарии Facebook:

Комментарии (3)

  1. Даша

    Спасибо, очень полезный урок.

  2. Игорь

    спасибо за урок , очень помог при создании формы заказа, капча работает как надо , но вместе с письмом приходит код от капчи , как сделать так чтобы он не приходил вместе с письмом? В конце письма вот такое: G-recaptcha-response:03AHJ_VutIlfzq15kuK4ckUK2xne…………………….очень длинный

  3. Анатолий

    В каких файлах или как подключается
    script src=’https://www.google.com/recaptcha/api.js’>
    Затем в месте, где должна отображаться каптча, добавляем следующий блок:

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не робот.

Spam Protection by WP-SpamFree