Битрикс защита веб-форм от спама

Судя по проектам реализованных на 1С-Битрикс, встроенная CAPTCHA очень легко обходится спам-ботами. Давайте разбираться какие есть варианты решения данной проблемы.

Есть несколько методом борьбы со спамом. Самый распространенный из них, это добавить еще одно поле, и скрыть его для пользователей в браузере. В самом же обработчике проверять «если поле заполнено, значит это спам бот и результат никуда не отправляем».

Защита от спама при помощи JS вообще не работает, все эти валидации хороши лишь для пользователя, чтобы он правильно вводил емейл или телефон по маске.

Рассмотрим способ через обработчик событий. Данный код добавляет исключение если в полях найдено слово ‘http’, при помощи которого так любят спам боты указывать ссылки на свои сайты. Давайте взглянем на него детальней

AddEventHandler('form', 'onBeforeResultAdd', 'my_onBeforeResultAdd');
function my_onBeforeResultAdd($WEB_FORM_ID, &$arFields, &$arrVALUES)
{
	global $APPLICATION;
	$spam = false;
	foreach($arrVALUES as $prop => $val) {
		if (strstr($prop, 'form_') && strstr($val, 'http')) {
			$spam = true;
			break;
		}
	}
	if ($spam == true) {
		$err_str = 'Запрещается указывать ссылки в полях формы!';
		$APPLICATION->ThrowException($err_str);
		return false;
	}
}

Исключение добавляется при помощи $APPLICATION->ThrowException(). Вы также можете усложнить логику применив проверку на $WEB_FORM_ID.

А какие способы борьбы со спамом знаете вы? Обязательно поделитесь ими с остальными в комментариях 🙂

автор: Dmitriy

Занимаюсь веб-разработкой с 2011 года. Посмотреть некоторые из моих работ, а также узнать чуть больше обо мне, вы можете на forwww.ru

- Создание сайта на 1С-Битрикс;
- Доработки и правки на рабочем проекте;
- Адаптивная вёрстка и натяжка на Битрикс;
- Выгрузка и Загрузка товаров на сайт;
- Парсинг;
- Интеграции со сторонними сервисами по API;
- Многоязычные версии сайтов и многое другое.

Бесплатно проведу технический аудит вашего сайта, а также дам рекомендации по продвижению проекта. Отвечу на любые вопросы. Пишите :)
E-mail: dmitriyribka@gmail.com
Skype: cinemacreaterus

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *