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

OnAfterUserRegister

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

Параметры

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

Все параметры данного обработчика являются ссылками на исходные переменные. Поэтому если вы измените значение параметра внутри обработчика, это приведет к смене значения исходной переменной поступившей на вход функции-обработчика.
Это позволяет, например, изменить RESULT_MESSAGE, что приведет к смене сообщения возвращаемого функцией CUser::Register.

См.также:

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

<?
// файл /bitrix/modules/my_module_id/include.php
class MyClass
{
// создаем обработчик события "OnAfterUserRegister"
function OnAfterUserRegisterHandler(&$arFields)
{
// если регистрация успешна то
if($arFields["USER_ID"]>0)
{
// если текущий сайт - r1, то
if(SITE_ID=="r1")
{
// зададим сообщение об успешной регистрации на сайте r1
$arFields["RESULT_MESSAGE"]["MESSAGE"] = "Вы успешно зарегистрировались на сайте \"Мой любимый сайт 1\"";
}
elseif(SITE_ID=="r2")
{
// зададим сообщение об успешной регистрации на сайте r2
$arFields["RESULT_MESSAGE"]["MESSAGE"] = "Вы успешно зарегистрировались на сайте \"Мой любимый сайт 2\"";

}
}
return $arFields;
}
}
?>

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

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

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

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

Добавлять комментарии могут только зарегистрированные пользователи. Сообщения для просмотра появляются после модерации.
0
EvGenius
Цитата
Все параметры данного обработчика являются ссылками на исходные переменные. Поэтому если вы измените значение параметра внутри обработчика, это приведет к смене значения исходной переменной поступившей на вход функции-обработчика.
Это позволяет, например, изменить RESULT_MESSAGE, что приведет к смене сообщения возвращаемого функцией CUser::Register.


На самом деле только RESULT_MESSAGE и можно изменять. Изменения в других полях не сохранятся. Если необходимо модифицировать поля регистрации пользователя перед сохранением, необходимо использовать событие OnBeforeUserRegister.
1
Роберт Басыров
Задача: сделать регистрацию, в которой будет только емайл (он же логин).

Решение:

В шаблоне стандартного компонента system.auth.registration кастомизируем поля для логина:
Код
<input type="hidden" name="REGISTER[LOGIN]" value="temp_login">


В /bitrix/php_interface/init.php вставляем следующий код:
Код
<?php
AddEventHandler("main", "OnBeforeUserRegister", Array("MyClass", "OnBeforeUserRegisterHandler"));
class MyClass
{
   function OnBeforeUserRegisterHandler(&$arFields)
    {
          $arFields["LOGIN"] = $arFields["EMAIL"];
    }
}
?>
© «Битрикс», 2001-2012, «1C-Битрикс», 2012