PhoneSpamDetect — валидация телефонов в формах MODX без API-ключей



Коллеги, знакомая картина: в форму прилетает «телефон» вроде 12345, 00000000000 или номер из другой страны — а FormIt его спокойно проглатывает. Менеджер перезванивает в пустоту, CRM засоряется, в отчётах красивые цифры, а реальных заявок меньше.

PhoneSpamDetect — дополнение для MODX Revolution 3.x, которое проверяет телефон до отправки формы. Под капотом — Google libphonenumber: та же логика, что используют крупные сервисы, но локально на вашем сервере. Без API-ключей, без внешних запросов и без ежемесячных лимитов.

Один preHook для FormIt — и контактные формы, заявки на звонок и лид-магниты перестают принимать явный мусор.

Что умеет


Локальная валидация
Проверяются формат номера, его валидность для региона и нормализация в E.164. Библиотека уже входит в пакет — на продакшене не нужен composer install.

Один preHook — phoneSpamBlock
Добавляете в &preHooks FormIt. Работает с обычными формами, FetchIt и SendIt — везде, где на сервере вызывается FormIt.

Фильтр по странам
По умолчанию разрешён RU. Нужны несколько рынков — укажите список ISO-кодов: RU,KZ,BY. Нужен международный сайт — оставьте настройку пустой: пройдут любые валидные номера.

Нормализованный номер в плейсхолдерах
Сниппет isSpamPhone отдаёт E.164, регион, причину блокировки и нормализованный номер — удобно для писем, CRM и отладки.

Настраиваемое сообщение и лог
Текст для пользователя при блокировке — в системных настройках. Заблокированные попытки можно писать в журнал MODX.

Как подключить за минуту


[[!FormIt?
    &preHooks=`phoneSpamBlock`
    &hooks=`email,redirect`
    &validate=`name:required,phone:required,email:required:email`
]]

Если поле телефона называется не phone, задайте имя в настройке phonespamdetect_phone_field или параметром phoneField у preHook.

Хотите и ботов отсечь, и телефоны проверить — ставьте вместе с CrawlerDetect:

&preHooks=`crawlerDetectBlock,phoneSpamBlock`

Что блокируется


  • номера с невалидным форматом или длиной;
  • номера из страны, которой нет в phonespamdetect_allowed_regions;
  • мусорные заявки до отправки письма и записи в CRM.
PhoneSpamDetect не определяет «спам по базам жалоб» — он отсекает технически невалидные и нежелательные по региону номера. Для большинства сайтов этого достаточно, чтобы перестать тратить время менеджеров на заведомо пустые звонки.

Настройки (namespace phonespamdetect)


  • phonespamdetect_allowed_regionsRU или RU,KZ,BY;
  • phonespamdetect_default_region — регион для номеров без «+» (по умолчанию RU);
  • phonespamdetect_phone_field — имя поля формы;
  • phonespamdetect_block_message — текст при блокировке;
  • phonespamdetect_log_blocked — логирование попыток.

Стек



  • MODX Revolution 3.x
  • PHP 8.2+
  • FormIt
  • giggsey/libphonenumber-for-php (встроен в пакет)
Дополнение уже в ModStore. Документация доступна по адресу: PhoneSpamDetect

Если тестировали на своих формах — делитесь в комментариях, какие кейсы ещё стоит закрыть в следующих версиях.
Иван Бочкарев
4 часа назад
modx.pro
53
+3
Поблагодарить автора Отправить деньги

Комментарии: 0

Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
0