Неблокирующая числовая CAPTCHA
Пять цифр, легко читается человеком, но защищает от ботов.
Заявка принята!
Спасибо!
Ваше сообщение отправлено!
Простая и быстрая капча для AjaxForm и FormIt. Без раздражающих картинок, с honeypot и тайм-защитой. Установка в один вызов.
Пять цифр, легко читается человеком, но защищает от ботов.
Работает через стандартные хуки MODX, без конфликтов с другими дополнениями.
Установите пакет, добавьте [ [!ScxCaptchaAjaxForm]] в форму — готово.
Проверка honeypot, времени заполнения и одноразовые токены.
Меняйте стили классов .scx-* под свой дизайн или подключайте scx.css/js глобально.
Используйте includeAssets=inline для динамически подгружаемых форм.
!AjaxForm?
&snippet=`FormIt`
&form=`tpl.demo.scx`
&hooks=`ScxCaptchaAjaxFormHook, email`
&validate=`name:required, email:required:email, scx_code:required`
]]
⚠️ Важно:
Этот пример не отправляет данные, просто показывает работу капчи.
Если требуется сделать реально рабочее демо — подключайте AjaxForm со сниппетом FormIt, как в «быстром старте»:
// лог появится здесь
Скачайте архив транспорт-пакета дополнения (scxcaptchaajaxform-1.0.0-pl.transport) с этой страницы.
Загрузите скачанный архив через админку сайта, или по FTP/SSH или через файловый менеджер хостинга в папку сайта:
/core/packages/
Файл не распаковывайте — MODX сделает это сам при установке.
/core/packages/your-package.transport.zip
-- Зайдите в панель MODX: Приложения → Установщик
-- Нажмите на птичку кнопки ЗАГРУЗИТЬ ПАКЕТЫ , в появившемся меню выбирите ИСКАТЬ ПАКЕТЫ ЛОКАЛЬНО
-- В появившемся модальном окне нажмите ДА
-- В списке ниже выберите дополнение scxcaptchaajaxform и нажмите УСТАНОВИТЬ
-- Далее следуйсте инструкциям по установке
Убедитесь, что существует файл TTF-шрифта:assets/components/scxcaptchaajaxform/fonts/DejaVuSansMono.ttf
Если его нет — будет использован bitmap-фолбэк (капча всё равно работает).
assets/components/scxcaptchaajaxform/fonts/DejaVuSansMono.ttf
Добавьте вызов капчи в вашу форму некэшируемо и подключите хук проверки.
// вставить в чанк с формой
[[!ScxCaptchaAjaxForm]]
// добавить хук ScxCaptchaAjaxFormHook в снипет AjaxForm
[[!AjaxForm?
&snippet=`FormIt`
&form=`tpl.AjaxForm.example`
&hooks=`ScxCaptchaAjaxFormHook, email`
&validate=`name:required, email:required:email, scx_code:required`
]]
Если хотите подключить стили/скрипты один раз для всего сайта, добавьте в шаблон:
<link rel="stylesheet" href="/assets/components/scxcaptchaajaxform/scx.css">
<script src="/assets/components/scxcaptchaajaxform/scx.js"></script>
Минимальный пример интеграции
// вставить в чанк с формой
[[!ScxCaptchaAjaxForm]]
// Добавить хук ScxCaptchaAjaxFormHook в снипет AjaxForm
[[!AjaxForm?
&snippet=`FormIt`
&form=`tpl.AjaxForm.example`
&hooks=`ScxCaptchaAjaxFormHook, email`
&validate=`name:required, email:required:email, scx_code:required`
]]
Капча вставляется некэшируемо в чанк tpl.AjaxForm.example ([[!!ScxCaptchaAjaxForm]]).
Работает с AjaxForm и FormIt.
ttlincludeAssetsrenderscx_hpscx_tsscx_codescx_tokenМинимальная интеграция на статичной странице.
[[!!ScxCaptchaAjaxForm]]
[[!!AjaxForm?
&snippet=`FormIt`
&form=`tpl.AjaxForm.example`
&hooks=`ScxCaptchaAjaxFormHook,email`
&validate=`name:required,email:required:email,scx_code:required`
]]
Возвращаем CSS/JS вместе с HTML капчи для динамических вставок.
[[!ScxCaptchaAjaxForm? &includeAssets=`inline`]]
Подключаем scx.css/js без вывода самого блока.
[[!ScxCaptchaAjaxForm? &render=`0`]]
Если scx.css/js уже подключены глобально.
[[!ScxCaptchaAjaxForm? &includeAssets=`none`]]
Убедитесь, что вызов капчи некэшируемо: [[!ScxCaptchaAjaxForm]]. Страница и captcha.php должны быть на одном хосте/поддомене. Для модалок используйте &includeAssets=inline или подключите scx.css/js глобально. Проверьте, что форма AjaxForm инициализирована (есть скрытый input af_action).
Добавьте &debug=1 к URL картинки (captcha.php?...&debug=1) — получите текст: session_name, cookie, requested token, allowed tokens.
scx_hp (honeypot), scx_ts (timestamp), scx_code (ответ, 5 цифр), scx_token (токен). Поле scx_hp должно оставаться пустым.
Переопределяйте классы .scx-captcha, .scx-img, .scx-refresh, .scx-input, .scx-hp в своём CSS или подключите глобально scx.css.
Связь с нами