Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Данные пользователя в событии OnAfterUserAuthorize

00 голосов
3
Код
<?
// файл /bitrix/php_interface/init.php
AddEventHandler("main", "OnAfterUserAuthorize", Array("HhhAuth", "OnAfterUserAuthorizeHandler"));

class HhhAuth
{
   function OnAfterUserAuthorizeHandler($arUser){
      $name1 = $arUser['user_fields']['NAME'];
      $name2 = $arUser['user_fields']['LAST_NAME'];
/* тут кусок кода... */
   }
}
?>


Так вот, суть, раньше, до переезда и выхода новой защиты (защита сессий - Данные сессий хранятся в БД модуля безопасности), эти переменные у меня принимали нужные значения. Теперь они пустые. Где рыть?
Или теперь мне иначе нужно добывать имя и фамилию, или дело в настройках нового хоста? Но все остальное работает же.
Если я отключаю защиту сессий — сайт тут же накрывается медным тазом.
спросил 08 Март, 14 от Claid (200 баллов)

3 Ответы

00 голосов
Если пользователь авторизовался то его имя и фамилию можно выловить вот так:
Код
<?
global $USER;
echo "[".$USER->GetID()."] (".$USER->Login().") ".$USER->GetFirstName()." ".$USER->GetLastName();
?>
ответил 20 Авг, 14 от Grimmi (2,560 баллов)
00 голосов
Цитата
Павел Веселков пишет:
Если я отключаю защиту сессий — сайт тут же накрывается медным тазом.

А что конкретно не работает?
ответил 25 Дек, 14 от JIETYHOK (2,260 баллов)
00 голосов
Цитата
Николай Санников пишет:
Если пользователь авторизовался то его имя и фамилию можно выловить вот так:


Сожалею, но не работает. Переменная $USER не определена при данном событии. Хотя, не понятно почему.

Цитата
Михаил Митрофанов пишет:
А что конкретно не работает?

Скажем так, была тенденция, отключаю защиту, максимум через 12 часов сайт отрубается, спасает перезагрузка хоста.
1-й раз я даже не подумал на это, во 2-й раз, решил, что это случайность, но когда это повторилось в 3-й раз... Но, к сожалению, я заболел, поэтому не мог отследить, что да как. А продолжить данный эксперимент не могу позволить. У нас на сайте в среднем 5 000 посетителей в день.

А насчет проблемы в топике, опишу поподробнее. В данный момент сайт работает на двух движках: самописанный (дело было до меня) и Битрикс. Сделано было так, что после авторизации, в сессиях сохранялись данные пользователя, что бы при заполнении форм автоматом вносились его данные.
Соответственно, когда я авторизацию перенес на Битрикс (идет плавный переход со старого движка на новый), то пришлось использовать события.
Соответственно, я прописал так:

Код
<?
// файл /bitrix/php_interface/init.php
AddEventHandler("main", "OnAfterUserAuthorize", Array("HhhAuth", "OnAfterUserAuthorizeHandler"));

class HhhAuth
{
   function OnAfterUserAuthorizeHandler($arUser){
      $_SESSION[user][name1] = $arUser['user_fields']['NAME'];
      $_SESSION[user][name2] = $arUser['user_fields']['LAST_NAME'];
   }
}
?>


И все отлично работало, но недавно обнаружилось, что один из функционалов перестал работать. В следствии чего это случилось, сказать трудно, так как в течении недели сменился хостинг и прошли обновления Битрикса. Ну, я от радости, что появилась новая система защиты — включил ее. =)))
Поэтому, где искать хвосты — в системе защиты или в настройках хостинга — не понятно.

Но!!! Есть переменные, которые прописываются в сессию во время захода посетителя на сайт. Так вот, они прописываются. А дальнейшие попытки записать что-то — уже не срабатывают. Телефон разрывается от возмущенных пользователей, а я не могу понять, где искать ошибку. Перепробовал уже все что можно.

upd: В общем, последние эксперементы показали, что Битрикс тут абсолютно не при чем, рыть надо в направлении хоста. Т.е., суть в том, что при первом посещении сайта сессия записывается, а дальше не меняется вообще, а там есть переменная, которая запоминает последнюю страницу, которую посетил пользователь. Наш админ вернется из отпуска только через неделю. Может кто подсказать, в чем дело, в каких настройках? Может я сам смогу поправить.
ответил 14 Апр, 15 от Claid (200 баллов)

Похожие вопросы

0 голосов
4 ответов
0 голосов
3 ответов
0 голосов
1 ответ
спросил 23 Май, 19 от аноним