Обзор и использование reCaptcha

20 января, 2008 at 19:50 (/articles, /code, /php)

Для защиты Веб-сайтов в пике своей славы находится технология КАПТЧИ — это тест, используемый для того, чтобы определить, кем является пользователь системы: человеком или компьютером. Основная идея теста: предложить пользователю такую задачу, которую легко решает человек, но которую невозможно (или крайне трудно) научить решать компьютер. (с) Wikipedia

В наиболее распространённом варианте CAPTCHA: от пользователя требуется ввести символы, как правило, изображённые на предлагаемом ему рисунке в искажённом виде, иногда с добавлением шума или полупрозрачности.

captcha.jpg

Не так уж давно появился вариант КАПТЧИ -> ReCaptcha.

captchanew.gif

Новый вариант использует два слова для ввода с возможностью прослушивания вводимого текста по-буквенно.

А самое главное, новая каптча использует как бы авторизацию на сервере сервиса.

Небольшой пример использования

1. Первое что вам нужно — зарегистрироватся в сервисе

2. Вам нужно будет ввести домен вашего сайта, чтобы получить ReCaptcha key

captchahomepage.gif

Вместо mysite.ru введите свой домен.

3. Получите Ключ

captchanewvbvb.gif

И такс, вы получили Public и Private keys. Обязательно их сохраните.

4. Внедрить в скрипт

Обычно каптчу внедряют в станицу, где нужно заполнять форму(для того, чтобы веб-форма была защищена от флуд-ботов, спамеров).

Итак, допустим у вас есть скрипт, который регистрирует нового пользователя.

Внедряется очень просто


<?php
if(isset($_POST[‘sub’])) // Обработка формы
{
require_once(‘recaptchalib.php’); // запускаем библиотеку reCaptcha
$privatekey = «6Ld6-QAAAAfgHxgVIJcwS45EIwEA4dP9KBE65m»; // Private Key
$resp = recaptcha_check_answer ($privatekey,
$_SERVER[«REMOTE_ADDR»],
$_POST[«recaptcha_challenge_field»],
$_POST[«recaptcha_response_field»]);
if (!$resp->is_valid) { // Проверка на правильность ввода
die («Введён неправельный код. Вернитесь назад и попробуйте ещё раз.» .
«(reCAPTCHA said: » . $resp->error . «) <br><a href=\»#\» onclick=\»history.back()\»>Назад</a>»);
$name = addslashes($_POST[‘name’]); // Обработка поля name
$password = addslashes($_POST[‘password’]); // Обработка поля password
$password = md5($password); // Обработка поля password
$query = mysql_query(«SELECT * FROM users WHERE name = ‘$name’ AND pass = ‘$password’ LIMIT 1»); // Примерный запрос
/////////////// И тут ваши действия
///////////
//……………………………
//…………………………….
}
else
{
// Вывод формы
echo ‘
<form method=»post» action=»»>
<label class=»description» for=»name»><font color=»#CCCCCC»>Имя </font></label>
<input id=»element_2″ style=»background-color:#DAE3E7″ name=»name» class=»element text medium» type=»text» maxlength=»25″ value=»»/>
<label class=»description» for=»password»><font color=»#CCCCCC»>Пароль </font></label>
<input id=»element_3″ style=»background-color:#DAE3E7″ name=»password» class=»element text medium» type=»text» maxlength=»30″ value=»»/>’;
/////// Начало вывода КАПТЧИ
require_once(‘recaptchalib.php’);
$publickey = «6Ld6-QAAAAAdsffy_FLxiX8YTpxd45CEgqZwV3BN»; // Public Key
echo recaptcha_get_html($publickey);
/////// Конец вывода КАПТЧИ
echo ‘<input type=»hidden» name=»sub» value=»1″ /><br />
<input id=»saveForm» class=»button_text» type=»submit» name=»submit» value=»Вход» /><br />’;
// Конец вывода формы
?>

Самую последнюю версию библиотеки reCaptcha можно скачать здесь -> http://code.google.com/p/recaptcha/downloads/list?q=label:phplib-Latest


Спасибо за внимание. (с) n3m0

2 комментария

  1. [Y.P.C.]yla said,

    Хороший обзорик!
    В наше время только так нужно боротся с ботами…спамерами и т д и т п 🙂
    + дополнительно тренируешь зрение 😀

  2. Мальвина said,

    Хорошая стаья, хорошо изложена — умные мысли — редко навязчивые.

Оставьте комментарий