scxcaptchaajaxform

Неблокирующая числовая CAPTCHA (5 цифр) для AjaxForm/FormIt.
Бесплатно
Загрузите дополнение из админки вашего сайта.
Как загрузить?
Автор дополнения
Юрий
Пакетов
1
Закачек
10
Автор дополнения
Пакетов
1
Закачек
10
Версия 1.0.1-pl
Дата выпуска 28.11.2025
Загрузки 10
Просмотры 511
Внимание, этот компонент требует версию PHP 7.2 или выше! Если ваш сайт использует PHP ниже требуемого, установка этого дополнения может его сломать.
Внимание, этот компонент требует версию MODX не ниже 2.6 !
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