Скрипт текстової captcha для захисту від різних спамерських пошукових роботів - куточок веб-розробника

Практично кожен користувач інтернету регулярно стикається з CAPTCHA (в російській мові за цією абревіатурою закріпилося іменник "капча"). У класичному випадку CAPTCHA - це картинка, яка містить перекручені букви і цифри, які треба ввести в текстове поле поряд для підтвердження того, що ви є людиною, а не роботом, розсилають спам. Існують і більш екзотичні форми капчи, наприклад, виконані у формі тесту, загадки або міні-ігри. І все це заради захисту від автоматичного заповнення форм роботами, що розсилають спам.

Класичний зовнішній вигляд CAPTCHA показаний на малюнку:

Скрипт текстової captcha для захисту від різних спамерських пошукових роботів - куточок веб-розробника

1. Захист від спаму в соц.сети "ВКонтакте". 2. reCAPTCHA.

CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart) - це повністю автоматизований публічний тест Тьюринга для розрізнення комп'ютерів і людей. Детальніше можна прочитати в Вікіпедії.

Принцип роботи CAPTCHA вельми простий. Користувачеві демонструється завдання (перекручена картинка, текст або щось ще), яку людський мозок вирішує дуже швидко і з великою ймовірністю правильно. При цьому рішення такого завдання за допомогою засобів обчислювальної техніки або дуже трудомістким, або складно піддається алгоритмізації і, як наслідок, вимагає величезних витрат на розробку вирішальною програми. Після демонстрації завдання і отримання відповіді - відповідь порівнюється з оригіналом і в разі його правильності, користувачеві дозволяється зробити дію - відправити форму з введеними даними на обробку. Спам-роботи же, на цьому етапі як правило відсіваються.

У цій статті ми поговоримо про створення капчі своїми руками, причому капча буде не класичної у вигляді зображення, а текстової.

Принцип роботи нашої CAPTCHA буде таким. Капча формуватиме в поточній сесії дві змінні:
1. Питання в вигляді арифметичного виразу a + b, де 2

Файл index.php, що містить приклад звернення і використання нашої CAPTCHA в призначеній для користувача формі

В умови Перед тим, як отримати хеш md5 - прибираємо зайві прогалини по краях призначеного для користувача відповіді (функція trim ()) і наводимо відповідь до нижнього регістру (функція mb_strtolower ()).

Складність даного прикладу можна підвищити, змінивши рядок в файлі mycaptcha.php: на

В такому випадку, питання a + b буде виводитися також прописом, що утруднить його зчитування роботом.

Для того, щоб приклад працював коректно, необхідно:
1. Всі файли повинні бути записані в кодуванні UTF-8.
2. Скрипти повинні виконуватися на веб-сервері, а не запускатися в браузері, як файл.