Как работает глобальная переменная $user?
Вот мой сценарий:
Я создаю нового пользователя и динамически создаю для него некоторый контент, владельцем которого он является.
Каждый пользователь может войти в систему, просмотреть свой контент и отредактировать свой профиль. Я использую блок, в котором у меня есть ссылки в меню на каждый контент и на его профиль.
Вывод темы функции блока использует global $user;
для получения текущего зарегистрированного пользователя.
Однако странно то, что $user->uid
возвращает последнего созданного пользователя в системе и не текущий зарегистрированный пользователь. Также $user->language
относится к последнему созданному пользователю в системе. Почему?
Пользователь выходит из системы с помощью user/logout
; это команда для выхода, верно? Нужно ли мне делать больше после выхода пользователя из системы, например, сбрасывать ГЛОБАЛЬНУЮ переменную?
2 answers
Я бы проверил, не кэшируется ли блок или вы не используете что-то вроде Boost (статическое кэширование).
Звучит так, как будто содержимое блока кэшируется для меня.
global $user
всегда следует ссылаться на текущего вошедшего в систему пользователя.
Существует большая вероятность того, что вы, вероятно, сбрасываете глобальную переменную $user
в своем пользовательском коде. Хорошей практикой при работе с учетными записями пользователей является использование переменной $account
для различия между ними, см. Пример user_save().