Створюємо просту капчу для захисту форми зворотного зв’язку

Давним давно я вже писав, як створити найпримітивнішу капчу, для захисту форми зворотного зв'язку. Сьогодні я вирішив трохи переписати цю капчу.

Основні зміни стосуються процесу передачі секретного коду для перевірки введення користувача. У минулій статті секретний код передавався у прихованому полі разом з формою, що суттєво знижувало ефективність захисту від СПАМУ, оскільки цей код можна було без проблем розпарсувати та витягнути.

просту

Оптимальним варіантом передачі секретного коду є сесії. Отже, як і в минулій статті нам знадобляться 10 зображень із цифрами від 0 до 9, які матимуть назви аналогічні своїм зображеним цифрам. Завантажити архів з картинками можна тут.

Тепер давайте створимо файл з назвою captcha.class.php, який міститиме клас Captcha для роботи з капчею:

Цей клас матиме 3 методи:

  • __construct() - конструктор (викликається при ініціалізації класу)
  • 2. draw() - виводитиме зображення на екран
  • 3. getKeyString() - повертає секретний код

Отже, в __construct() нам необхідно згенерувати секретний код і записати його у вигляді масиву змінну $this->keystring

Тепер щоб вивести зображення на екран, необхідно пройтися цим масивом і згенерувати html-код картинок:

Ну і для того, щоб отримати цей секретний код, використовуємо метод getKeyString(), який записує в один рядок згенерований масив

Тепер, щоб скористатися цим класом і захистити Вашу форму зворотного зв'язку, необхідно створити ще один файлик і назвати його captcha.php. Він матиме наступний код:

Насамперед запускаємо сесію, ініціалізуємо капчу. Потім записуємо в сесію значення keystring, яке будемістити секретний код та виводимо зображення на екран.

Тепер у потрібному Вам місці, де Ви хочете бачити капчу, необхідно просто підключити файл captcha.php і запустити сесію. Робиться це так:

Щоб перевірити правильність введення капчі, необхідно в обробнику зробити таку перевірку: