scxcaptchaajaxform

Неблокирующая числовая CAPTCHA (5 цифр) для AjaxForm/FormIt.
Бесплатно
Загрузите дополнение из админки вашего сайта.
Как загрузить?
Автор дополнения
Юрий
Пакетов
1
Закачек
14
Автор дополнения
Пакетов
1
Закачек
14
Версия 1.0.1-pl
Дата выпуска 28.11.2025
Загрузки 14
Просмотры 692
scxcaptchaAjaxForm

Простая числовая 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