Автоматические боты постоянно слоняются по интернету и пытаются залезть во все щели. Сегодня мы заткнем еще 1 дыру.
Для этого идем в init.php и добавляем следующий код:
\Bitrix\Main\EventManager::getInstance()->addEventHandler("main", "OnEndBufferContent", "OnEndBufferWebFormAntiSpam"); function OnEndBufferWebFormAntiSpam(&$content) { // Добавляем стили перед head $xStyle = ' '; // Стили для поля $content = str_ireplace('', $xStyle.'', $content); // Добавляем поля $findField = ' '; // Максимально завлекающее ботов поля с утыканными name $xField . = $findField; // Добавляем к найденому полю вебформы наше поле $content = str_ireplace($findField, $xField, $content); return $content; } \Bitrix\Main\EventManager::getInstance()->addEventHandler('form', 'onBeforeResultAdd', 'onBeforeResultAddWebFormAntiSpam'); function onBeforeResultAddWebFormAntiSpam($WEB_FORM_ID, &$arFields, &$arrVALUES){ global $APPLICATION; // Проверяем поле на заполненость if(!empty($arrVALUES['last_name'])){ $APPLICATION->ThrowException('Хм... ты точно не робот?'); } }
Суть данного метода сводится к тому что мы вставляем фейковые поля, при заполнении которых происходит блокировка действия.