Глобальная переменная user хранит в себе основную информацию о текущем пользователе.
То есть находясь на сайте в эту переменную помещается ваш ник,дата регистрации,e-mail и так далее. Получить эту переменную можно в любой функции любого модуля,главное чтоб она была объявленной. То есть в коде функции необходимо написать
.
Вывести переменную можно с помощью функции print_r , не echo , так как это не строка.
Drupal 7:
Итак,выводим:
global $user;
echo '<pre>';
echo '</pre>';
Я запускаю эту функцию на реальном сайте и вижу:
Я сразу оставлю комментарии ко всем нужным нам пунктам.
stdClass Object
(
[uid] => 1 // уникальный номер пользователя
[name] => admin //логин
[pass] => $S$hfTY99АAckRXyPnCT8y7GaFhWG/pOv985O0ePXkrq //зашифрованный пароль
[mail] => example
@gmail
.com
//ящик [theme] => //тема пользователя.если она не задана-то используется тема по умолчанию
[signature] => //подпись,указанная в настройках пользователя
[signature_format] => filtered_html //формат ввода этой подписи
[created] => 1316016673 //дата создания аккаунта
[access] => 1323676302 //дата получения доступа к сайту
[login] => 1323061398 //дата последнего логина
[status] => 1 //статус.1-пользователь активен.0-заблокирован
[timezone] => Europe/Moscow //временная зона(часовой пояс)
[language] => ru //язык пользователя
[picture] => 0 //аватар
[init] => example@gmail.com
(
[contact] => 0
(
(
[og_members-block_1] => 1
)
)
[overlay] => 1
[htmlmail_plaintext] => 0
)
[sid] => 0nMYwlyPdjhGSddfK03bxQ2OTGTIchuGQg-CRQHvvSQ //идентификатор сессии
[ssid] =>
[hostname] => 41.41.151.11 //IP адрес пользователя
[timestamp] => 1323676302 //его текущее время
[cache] => 0
[session] => 'много всего ненужного'
[roles
] => Array //роли пользователя (
[2] => authenticated user
[3] => super_administrator
[5] => Автор
)
)
Теперь,зная из чего состоит эта переменная-мы можем ей пользоваться.
Примеры кода:
global $user;
//вывод имени
echo $user->name;
//IP
echo $user->hostname;
//статус
$status=$user->status;
if($status==1){
echo 'Пользователь '.$user->name.' активен';
}else{
echo 'Пользователь '.$user->name.' заблокирован';
}
//ящик
Нечего сложного. Например если вам известен только uid пользователя-то можно воспользоваться функцией user_load, передав функции номер пользователя.
Например:
echo '<a href="/user/'.$user->uid.'">'.$user->name.'</a>';
Ещё:
//загрузка пользователя под номером 5
$user=user_load(5);
Если нужно изменить объект пользователя, то вначале загрузите его, потом добавьте/удалите свои данные
и сохраните объект.
// Загрузка пользователя под номером 7 и изменение ему почтового ящика
$user=user_load(7);
$user->mail = 'new-email@example.com'; user_save($user);
// Загрузка пользователя под номером 10 и добавление ему роли.
// Роль обязательно должна быть создана заранее. Пусть это роль автора под номером 4
$user=user_load(10);
$user->roles[4]= 'Автор';
user_save($user);
Обратите внимание, что сохранять надо объект пользователя, а не указывать только идентификатор пользователя.