Борьба со спамом. Использование PHP и reCAPTCHA

суббота, Jul 4, 2009

Веб-программирование

Итак, если вы читает этот пост, то скорее всего разделяете всеобщее мнение, что спам – это вселенское зло! Борьба со спамом целая наука и один из способов защиты – это капча.

reCaptcha – это бесплатный сервис защиты сайтов от ботов. Выглядит оно вот так:

recaptcha

Плюсы данного сервиса:

  • Бесплатность, как уже говорилось выше, наверное самый важный параметр
  • Безопасность, до сих пор этот сервис ЕЩЁ не взломали ;)
  • Доступность для слепых. reCaptcha предлагает звуковую версию (а как собственно слепой найдёт капчу? да и вообще, что слепой человек будет “смотреть” в интернете?)
  • Популярность. Весьма сомнительный, но всёже плюс. Говорит о признании.

На данный момент доступны библиотеки для работы с reCaptcha для PHP, ASP.NET, Python, Perl, Ruby, Java, JSP и ColdFusion. Также уже написано много плагинов для защиты форм для разных движков: WordPress, Drupal, Joomla, TYPO3, phpBB, vBulletin и т.д. Подробнее тут.

Но нас интересует как встроить reCaptcha в свои php приложения.

  1. Во-первых нам понадобится свой ключ для api. Чапаем по ссылке, регистрируемся и получаем… ключи)
  2. Качаем библиотеку для работы с recaptcha.  Распаковываем архив, файл recaptchalib.php кидаем в одну папку с проектом.
  3. Для того чтобы отобразить капчу пишем такой код:
    require_once('recaptchalib.php');
    $publickey = "..."; // publickey, который получили на recaptcha.net
    echo recaptcha_get_html($publickey);
  4. В скрипте в который мы отправляем данные, должен быть такой код проверки:
    require_once('recaptchalib.php');
    $privatekey = "..."; // privatekey, который получили на recaptcha.net
    $resp = recaptcha_check_answer ($privatekey,
                                    $_SERVER["REMOTE_ADDR"],
                                    $_POST["recaptcha_challenge_field"],
                                    $_POST["recaptcha_response_field"]);
     
    if (!$resp->is_valid) {
      die ("reCAPTCHA введена не корректно. Вернитесь и попробуйте ещё раз!." .
           "(reCAPTCHA : " . $resp->error . ")");
    }

Собственно и всё!)

О функциях и переменных это библиотеки можно детальнее прочитать по ссылке (англ.)

На это всё! До новых встреч!

Popularity: 14%

Читать также

, , ,

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

  1. ML написал:

    Дешево и сердито!
    То что нужно!

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

Before you submit form: