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

Оптимальним варіантом передачі секретного коду є сесії. Отже, як і в минулій статті нам знадобляться 10 зображень із цифрами від 0 до 9, які матимуть назви аналогічні своїм зображеним цифрам. Завантажити архів з картинками можна тут.
Тепер давайте створимо файл з назвою captcha.class.php, який міститиме клас Captcha для роботи з капчею:
Цей клас матиме 3 методи:
- __construct() - конструктор (викликається при ініціалізації класу)
- 2. draw() - виводитиме зображення на екран
- 3. getKeyString() - повертає секретний код
Отже, в __construct() нам необхідно згенерувати секретний код і записати його у вигляді масиву змінну $this->keystring
Тепер щоб вивести зображення на екран, необхідно пройтися цим масивом і згенерувати html-код картинок:
Ну і для того, щоб отримати цей секретний код, використовуємо метод getKeyString(), який записує в один рядок згенерований масив
Тепер, щоб скористатися цим класом і захистити Вашу форму зворотного зв'язку, необхідно створити ще один файлик і назвати його captcha.php. Він матиме наступний код:
Насамперед запускаємо сесію, ініціалізуємо капчу. Потім записуємо в сесію значення keystring, яке будемістити секретний код та виводимо зображення на екран.
Тепер у потрібному Вам місці, де Ви хочете бачити капчу, необхідно просто підключити файл captcha.php і запустити сесію. Робиться це так:
Щоб перевірити правильність введення капчі, необхідно в обробнику зробити таку перевірку: