freeCap PHP CAPTCHA для MODX

Вряд ли кто-нибудь из тех, кто делает сайты на MODX будет спорить с тем, что CAPTCHA, и по сей день входящая в стандартную поставку MODX Evo (текущая версия 1.0.5) для спам-ботов не препятствие. Кто не видел — насладитесь зрелищем, и хватит о ней:

После сравнения энного количества вариантов с учетом соотношения
простота реализации и доступность (для моего понимания) кода / эффективность
выбор был сделан в пользу freeCap PHP CAPTCHA.

Интеграция в систему

Поскольку главной задачей была защита формы регистрации WebSignup, ее я решил в первую очередь, оставив на потом друие расширения MODX, имеющие формы отправки данных.

На сайте автора нет мануала по установке скрипта, но в поставку включен шаблон (исходный код демо-страницы), который лучше любых разжевываний показывает «How-to».

Этим шаблоном мы и воспользуемся.

Чтобы не множить сущности, поместим каталог freecap туда же, где находится файл стандартной капчи vericode.php, а именно в каталог /manager/includes. Здесь же находится конфигурационный файл MODX config.inc.php, в котором объявлена функция startCMSSession(), создающая сессии MODX; мы его подключим к своему генератору картинок CAPTCHA freecap.php

Открываем для редактирования файл /manager/includes/freecap/freecap.php. В самом начале комментируем или удаляем вызов функции инициализации сессии session_start() и добавляем свой код:


//session_start();
include_once "../config.inc.php";
startCMSSession();

Тем, кто перешел на РНР 5.3 нужно заменить ereg_replace() на preg_replace() (см. документацию), а именно в секции Choose Word строку


$word = ereg_replace("[^a-z]","",$word);

на


$word = preg_replace("/[^a-z]/","",$word);

Сохраняем изменения. Остальные действия производятся в скрипте, откуда вызывается генератор картинки CAPTCHA freecap.php, и он нам генерирует вот такую картинку:

Пошаговое описание модификации сниппета WebSignup

Скачать готовое решение с русифицированным файлом websignup.inc.php сниппета WebSignup

Loading comments …   ←   freeCap PHP CAPTCHA для MODX

Fields marked with asterix are required.


Max 40 alpha-numeric characters, including spaces.


Valid email. Max 255 characters. Not displayed publicly.

*