Битрикс: Защита от спама регистраций пользователей без капчи
0 из 5, голосов: 0
65
Метод рабочий, статья в процессе оформления.
Создаем дополнительное поле в стандартной форме регистрации, для этого:
- Перехрдим к "Список пользователей"
- Нажимаем на любого
- Нажимаем "Доп. поля"
- Нажимаем "Добавить пользовательское поле"
* Название я написал "UF_STRING"
* Тип данных выбираем "Строка"
* Ставим галочку "Обязательное"
* Ставим галочку "Не разрешать редактирование пользователем"
Теперь в форме регистрации появилось дополнительное поле UF_STRING
- этот скрипт проставляет у нового поля с name = UF_STRING значение текущего серверного времени в секундах.
И скрываем в форме новое поле:
В блоке "********************* User properties ***************************************************"
Присваиваем: style="display: none; visibility: hidden;" двум <tr> в этом блоке
В файл bitrix/php_interface/init.php добавляем:
// добавляем обработчик события при регистрации
AddEventHandler("main", "OnBeforeUserRegister", "OnBeforeUserRegisterHandler");
// описываем саму функцию
function OnBeforeUserRegisterHandler(&$arFields)
{
$time_add_form = $arFields["UF_STRING"];//время начала заполнения формы
$time_add_script = time();//текущее время
//если из формы не поступило время начала заполнения формы
//или форма заполнялась <= 10 секунд
if (($time_add_form=='') or (($time_add_script - $time_add_form) <= 10) )
{
$GLOBALS['APPLICATION']->ThrowException('Зафиксировано автоматическое заполнение!!! Подождите после заполнения формы 10-20 секунд, поводите мышкой или пальчиком по экрану и потом нажимайте РЕГИСТРАЦИЯ.');
return false;
}
}
Очень хорошо расписаны шаблоны регистрации: https://tokmakov.msk.ru/blog/item/167