Антибот без видимой капчи: таймер, AJAX и скрытые поля в обработчике формы
Разбор задачи
Бот часто отправляет форму быстрее человека и не выполняет реальный клиентский сценарий. Комбинируют скрытый декой-инпут, минимальный интервал между открытием страницы и отправкой и отдельный токен, который браузер подставляет после лёгкого клиентского шага.
Минимальный серверный каркас
На входе сохраните метку времени первого показа и сравните дельту; пустые «ловушечные» поля должны оставаться незаполненными.
<?php
declare(strict_types=1);
function form_signature_ok(?string $postedHoney, float $postedAt): bool {
if ($postedHoney !== '') {
return false;
}
$now = microtime(true);
return $postedAt > 0 && ($now - $postedAt) >= 2.5;
}
?>Для Битрикс логичнее вешать фильтры на отправку формы веб‑форм или свой обработчик: не дублируйте валидацию в шаблоне и в модуле, оставьте одну точку истины на сервере.
Замечания перед выкладкой
Вносите правки только через среду с бэкапом и понятным diff. Жёсткие лимиты по времени отсекут пользователей с медленными сетями — смягчайте пороги и логируйте ложные срабатывания отдельно от пользовательских ошибок.
Не хотите копаться сами?
Починю за 1-3 дня. Без предоплаты — оплата по результату.
15+ лет опыта с 1С-Битрикс · Без предоплаты · 7 дней гарантии