Skip to content
  1. Компоненты
  2. PhoneSpamDetect
  3. Решение проблем

Решение проблем

Форма пропускает явно кривые номера

Сначала пройдитесь по базовому:

  • в &preHooks есть phoneSpamBlock
  • форма реально идёт через FormIt, а не через свой обработчик
  • имя поля совпадает с phonespamdetect_phone_field или с phoneField
  • phonespamdetect_validate_enabled и phonespamdetect_block_invalid включены

Для FetchIt: на странице, куда уходит AJAX, FormIt должен вызываться с phoneSpamBlock.

Для SendIt: в пресете в preHooks должен быть phoneSpamBlock.

Проходит номер из другой страны

  • загляните в phonespamdetect_allowed_regions — лишний код или пустая строка (пустая = любая страна)
  • в настройках ISO (RU, KZ), не телефонный код (+7)

Нормальный номер не проходит

Часто дело в default_region: человек набрал 8 999 ... без +, а регион в настройках не тот. Или страны нет в allowed_regions. Иногда libphonenumber жёстче, чем кажется на глаз.

Включите phonespamdetect_log_blocked, отправьте форму ещё раз, смотрите Управление → Системный журнал — там будет поле, номер и reason.

Сообщение об ошибке не видно

В шаблоне должен быть [[+fi.validation_error_message]] или Fenom-аналог. Проверьте, что другой хук не затирает плейсхолдер. На AJAX — что клиент вообще показывает ошибки FormIt.

isSpamPhone всегда 0

  • не передали phone
  • выключен phonespamdetect_validate_enabled
  • не поднялась библиотека — есть ли core/components/phonespamdetect/vendor/autoload.php? При сбое сниппет не блокирует (fail-open) и пишет в лог

Логи

Управление → Системный журнал при включённом phonespamdetect_log_blocked: поле, нормализованный номер, причина.


FAQ

Нужен composer install?

Нет. Библиотека уже в пакете.

Номера куда-то уходят в интернет?

Нет, всё на сервере через giggsey/libphonenumber-for-php.

Несколько стран в allowed_regions?

Да: RU,KZ,BY и т.д.

Пустой allowed_regions?

Любой валидный номер. По стране не режем, по формату — да.

RU и +7 — это одно и то же?

Нет. В настройках пишите ISO: RU, KZ, BY. +7 — это код линии, не настройка дополнения.

CAPTCHA?

Добавьте в preHooks рядом с phoneSpamBlock. С CrawlerDetect обычно так: crawlerDetectBlock,phoneSpamBlock,recaptcha.

AjaxForm?

PhoneSpamDetect заточен под FormIt. Если AjaxForm на бэкенде всё равно зовёт FormIt — добавьте phoneSpamBlock туда.

SendIt?

Да. В пресете 'preHooks' => 'phoneSpamBlock'. Подробнее в разделе про SendIt.

MODX 2?

Нет, только 3.x.

База спамеров, HLR, внешний скоринг?

В этой версии нет. Только libphonenumber: формат, страна, E.164.