Битрикс — запретить регистрацию

Есть несколько вариантов как защитить форму регистрации от спама. Во первых, вам необходимо вывести какое-то системное поле, которое мы будем скрывать. Выбрал PERSONAL_MOBILE — его нужно передать в параметрах компонента. В самом же компоненте скрываем его полностью, и проверять будем так — если там что-то есть, то это бот.

Вторая проверка будет на имя пользователя. Допустим, нас атакует спам, в имя пользователя постоянно записывает «Выиграйте 100$ на первую игру». Проверять будем на кусок фразы «100$».

// добавляем обработчик события при регистрации
AddEventHandler("main", "OnBeforeUserRegister", "OnBeforeUserRegisterHandler");
AddEventHandler("main", "OnBeforeUserUpdate", "OnBeforeUserRegisterHandler");
function OnBeforeUserRegisterHandler($args)
{
	AddMessage2Log($args);
	if (strstr($args['NAME'], '100$')) {
		$GLOBALS['APPLICATION']->ThrowException('Ошибка. Обратитесь к администратору!');
		return false;
	}
	if ($arFields["PERSONAL_MOBILE"] != false) {
		$GLOBALS['APPLICATION']->ThrowException('Ошибка. Обратитесь к администратору!');
		return false;
	}
}

AddEventHandler("main", "OnBeforeUserAdd", Array("MyClass", "OnBeforeUserAddHandler"));
class MyClass
{
	function OnBeforeUserAddHandler(&$arFields)
	{
		if(strlen($arFields["PERSONAL_MOBILE"])>0)
		{
			global $APPLICATION;
			$APPLICATION->throwException("Ошибка. Обратитесь к администратору!");
			return false;
		}
		if (strstr($arFields['NAME'], '100$')) {
			global $APPLICATION;
			$APPLICATION->throwException("Ошибка. Обратитесь к администратору!");
			return false;
		}
	}
}

Добавим сразу целую кучу проверок, хотя могли обойтись OnBeforeUserAdd.

автор: Dmitriy

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

Пишите, отвечу на любые вопросы.
E-mail: dmitriyribka@gmail.com

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

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