Как загрузить?
Простая числовая CAPTCHA (5 цифр) для FormIt, AjaxForm и FetchIt.
Удобна для пользователя и эффективна против ботов.
Возможности
- Работает с FormIt, AjaxForm и FetchIt.
- Автоматическая перерисовка капчи без перезагрузки страницы.
- Показ ошибок под полем scx_code.
- Антибот-защита: honeypot, проверка времени заполнения.
Требования
- MODX 2.8+ или 3.x
- PHP 7.4+ (лучше 8.x)
- GD и поддержка TTF
Быстрый старт
Вставьте капчу в форму:
[[!ScxCaptchaAjaxForm]]
FormIt:
[[!FormIt?
&hooks=`ScxCaptchaAjaxFormHook,email`
&validate=`name:required,email:required:email,scx_code:required`
]]
[[!ScxCaptchaAjaxForm]]
AjaxForm:
[[!AjaxForm?
&snippet=`FormIt`
&hooks=`ScxCaptchaAjaxFormHook,email`
&validate=`scx_code:required`
]]
Параметры
- ttl — время жизни токена (по умолчанию 1200 сек)
- includeAssets: head / inline / none
- render: 1 — вывести HTML капчи, 0 — только ассеты
FetchIt
Капча автоматически обновляется по событиям FetchIt: success, error, reset.
Пример FetchIt
[[!ScxCaptchaAjaxForm]]
Отправить
Глобальное подключение файлов
Если нужно подключить CSS и JS вручную, добавьте в шаблон строки:
link rel=«stylesheet» href="[[++assets_url]]components/scxcaptchaajaxform/scx.css"
script src="[[++assets_url]]components/scxcaptchaajaxform/scx.js"
Безопасность
- Код хранится только как хеш (password_hash).
- Токены одноразовые, очищаются по TTL.
- Проверка строго 5 цифр.
Автор
Сайт: https://sait-modx.by
Email: info@sait-modx.by
Лицензия MIT
scxcaptchaAjaxForm — История изменений
v1.0.1 (2025-11-16)
- Совместимость с FetchIt: добавлен фронтовый адаптер, который слушает события fetchit:success / fetchit:error / fetchit:reset и автоматически перерисовывает капчу. Ошибки по scx_code отображаются под полем ввода.
- Добавлен публичный фронтовый метод window.ScxCaptcha.reloadInForm(formElement).
- Улучшен UX: после успешной отправки капча перерисовывается без Bad token.
- Документация обновлена (README): раздел «Интеграция с FetchIt», примеры и подсказки по includeAssets/render.
v1.0.0 (начальный релиз)
- Числовая CAPTCHA (ровно 5 цифр) с TTF-шрифтом и лёгким шумом.
- Полная совместимость с AjaxForm и FormIt.
- Без закрытия сессии: первая загрузка показывает «заглушку», реальная картинка подгружается по действию пользователя (кнопка «Обновить», клик по изображению, фокус поля).
- Универсальные имена с префиксом scx_:
- Поля формы: scx_hp, scx_ts, scx_code, scx_token
- Ключи сессии: $_SESSION['scx_allowed'], $_SESSION['scx_code']
- CSS-классы: .scx-captcha, .scx-img, .scx-refresh, .scx-input, .scx-hp
- Параметры сниппета:
- includeAssets=head|inline|none — способ подключения CSS/JS (head по умолчанию)
- render=1|0 — отдавать ли HTML блока (1 по умолчанию)
- ttl — время жизни токена (по умолчанию 1200 сек)
- Поддержка нескольких форм на странице; инициализация динамически добавленных форм (MutationObserver).
- Автоочистка просроченных токенов в сессии.
- Хранение ответа в сессии только как хэш (password_hash); одноразовая валидация.
- Режим отладки для captcha.php: ?debug=1 (session_name, cookie, token, allowed tokens).
- Готовые ассеты scx.css/scx.js (возможность подключать глобально).
- Документация: инструкция по установке/использованию, примеры для AjaxForm и FormIt.

Последние обсуждения в сообществе MODX.pro