1C-Битрикс: Управление сайтом

OnBeforeUserRegister

bool
функция-обработчик(
 array &arArgs
);
Событие "OnBeforeUserRegister" вызывается до попытки регистрации нового пользователя методом CUser::Register и может быть использовано для прекращения процесса регистрации или переопределения некоторых полей.

Параметры

ПараметрОписание
arArgs Массив полей регистрации нового пользователя:
  • LOGIN - имя входа пользователя
  • NAME - имя пользователя
  • LAST_NAME - фамилия пользователя
  • PASSWORD - пароль
  • CONFIRM_PASSWORD - подтверждение пароля
  • CHECKWORD - новое контрольное слово для смены пароля
  • EMAIL - EMail пользователя
  • ACTIVE - флаг активности [Y|N]
  • SITE_ID - ID сайта по умолчанию для уведомлений
  • GROUP_ID - массив ID групп пользователя
  • USER_IP - IP адресс пользователя
  • USER_HOST - хост пользователя
На основании массива полей происходит добавление пользователя и отсылка почтового события NEW_USER.

Массив значений данного обработчика является ссылкой на исходные переменные. Поэтому при изменении значения параметра или добавлении нового поля в массив внутри обработчика приведет к смене значения исходной переменной поступившей на вход функции-обработчика.
Это позволяет, например, добавить в массив arArgs дополнительные регистрационные поля нового пользователя или поля для почтового события NEW_USER.

Возвращаемое значение

Для отмены авторизации пользователя и прекращении выполнения метода CUser::Register необходимо в функции-обработчике создать исключение методом $APPLICATION->ThrowException() и вернуть false.

См. также

Пример функции-обработчика:

<?
// файл /bitrix/modules/my_module_id/include.php
class MyClass
{
    // создаем обработчик события "OnBeforeUserRegister"
    function OnBeforeUserRegisterHandler(&$arFields)
    {
        // если пользователь пришел по рекламной кампании #34, то
        if ($_SESSION["SESS_LAST_ADV_ID"]==34)
        {
            // добавляем его в группу #3
            $arFields["GROUP_ID"][] = 3;    

            // добавим административный комментарий
            if (intval($_SESSION["SESS_ADV_ID"])>0)
                $arFields["ADMIN_NOTES"] = "Рекламная кампания #34 - прямой заход";
            else
                $arFields["ADMIN_NOTES"] = "Рекламная кампания #34 - возврат";

            $arFields["SITE_ID"] = "ru";
        }
    }
}
?>

Пример регистрации функции-обработчика:

<?
// регистрируем обработчик события "OnBeforeUserRegister"
RegisterModuleDependences("main", "OnBeforeUserRegister", "my_module_id", "MyClass", "OnBeforeUserRegisterHandler");
?>

Пользовательские комментарии

Пользовательские комментарии не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Добавлять комментарии могут только зарегистрированные пользователи. Сообщения для просмотра появляются после модерации.
0
Николай Гнусов
Делаем возможность регистрации поля Логин только латинскими буквами и цифрами.

Код
// файл /bitrix/php_interface/init.php
// добавляем обработчик события при регистрации
AddEventHandler("main", "OnBeforeUserRegister", "OnBeforeUserRegisterHandler");
// а заодно и при обновлении данных пользователем
AddEventHandler("main", "OnBeforeUserUpdate", "OnBeforeUserRegisterHandler");

// описываем саму функцию 
function OnBeforeUserRegisterHandler($args)
  {
   if (!ereg("^[a-zA-Z0-9_-]+$",$args['LOGIN'])) 
   {
   $GLOBALS['APPLICATION']->ThrowException('Логин может состоять из латинских букв, цифр, знаков "-" и "_"'); 
   return false;   
   }
  return true;
  }


Теперь пользователи могут регистрировать только логин, состоящий из латинских букв, цифр, знаков "-" и "_"
0
Nikolai Besschetnov
Не забывайте, что функция будет вызываться также при подтверждении регистрации (OnBeforeUserUpdate), где ключа LOGIN нет.
Код
if ( isset($args['LOGIN']) && ! preg_match("/^[-a-zA-Z0-9_]+$/", $args['LOGIN']) )
© «Битрикс», 2001-2012, «1C-Битрикс», 2012