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

Discussion in 'PHP' started by n3m0, 20 Jan 2008.

  1. n3m0

    n3m0 Elder - Старейшина

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

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

    [​IMG]

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

    [​IMG]

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

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

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

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

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

    [​IMG]
    Вместо mysite.ru введите свой домен.

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

    [​IMG]


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

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

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

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

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

    PHP:
    <?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

    Это не статья, а очень маленьки обзор. не судите строго
    Спасибо за внимание. (с) n3m0
     
    #1 n3m0, 20 Jan 2008
    Last edited: 20 Jan 2008
    1 person likes this.