Невидимый пользователю антиспам для форм 1С-Битрикс

26.11.2021

Как сделать без добавления визуальной Captcha проверку на спам-ботов в формах. Т.е. чтобы для пользователей в форме ничего не добавилось, но при этом фильтрация спама была.

Добавляем в шаблон нашей формы (template.php) два инпута типа text и скрываем их CSS стилями, чтобы простые пользователи их не видели, а спам-боты при заполнении формы видели.



После добавляем обработчик события перед запоминанием результат формы и в нем проверяем заполненность этих полей. Заполнены - скорее всего это робот, выдаём исключение, результаты формы не сохраняется.

// этот обработчик можно добавить например в init.php
AddEventHandler('form', 'onBeforeResultAdd', 'antiSpam');

function antiSpam($WEB_FORM_ID, &$arFields, &$arrVALUES)
{
    global $APPLICATION;
    if (isset($_REQUEST["ANTI_SPAM"]) && $_REQUEST["ANTI_SPAM_VALUE"] !== "") {
        $APPLICATION->ThrowException('Проверка на антиспам не пройдена!');
    }
}

Метод возможно не так хорош как те же капчи от Гугла, но имеет место быть.


Возврат к списку