Блог разработчиков

Все разделы | CMS Joomla 2.5 | Общее | PHP | Javascript + jQuery

Как вытянуть имя авторизованного пользователя Joomla! Работаем с функцией JFactory/getUser

17 августа 2014

Для вывода информации авторизованного пользователя на сайте необходимо прописать следующий код:

$user = JFactory::getUser();

if (!$user->guest) {
 echo 'Вы авторизованы как:<br />';
 echo 'Логин: ' . $user->username . '<br />';
 echo 'Имя пользователя: ' . $user->name . '<br />';
 echo 'id пользователя: ' . $user->id . '<br />';
}

В первой строке мы обращаемся к фреймверку для получения массива данных об авторизованном пользователе. После получения данных делаем проверку, авторизован ли пользователь. Если это так то выводим на экран данные: логин, имя пользователя, id.

Для того чтобы определить полный перечень передаваемых данных необходимо в коде вашего сайта после объявления переменной $user вывести на экран массив. Для этого будет использоваться функция var_dump.

$user = JFactory::getUser();

if (!$user->guest) {
   var_dump($user);
}

Если пользователь авторизован то на экране можно увидеть похожую строку:

object(JUser)#16 (19) { ["id"]=> string(2) "62" ["name"]=> string(10) "Админ" ["username"]=> string(5) "admin" ["email"]=> string(20) "email@email.ru" ["password"]=> string(65) "f353fd73257c5f78870b22f9e9e4e5be:4AvkOAEiJZLyXxrI73CxZFxmlcxBWxxJ" ["password_clear"]=> string(0) "" ["usertype"]=> string(19) "Super Administrator" ["block"]=> string(1) "0" ["sendEmail"]=> string(1) "1" ["gid"]=> string(2) "25" ["registerDate"]=> string(19) "2012-08-21 15:26:40" ["lastvisitDate"]=> string(19) "2014-08-17 03:42:18" ["activation"]=> string(0) "" ["params"]=> string(60) "admin_language= language= editor=jce helpsite= timezone=10 " ["aid"]=> int(2) ["guest"]=> int(0) ["_params"]=> object(JParameter)#17 (7) { ["_raw"]=> string(0) "" ["_xml"]=> NULL ["_elements"]=> array(0) { } ["_elementPath"]=> array(1) { [0]=> string(66) "/home/k/kompas/public_html/libraries/joomla/html/parameter/element" } ["_defaultNameSpace"]=> string(8) "_default" ["_registry"]=> array(1) { ["_default"]=> array(1) { ["data"]=> object(stdClass)#18 (5) { ["admin_language"]=> string(0) "" ["language"]=> string(0) "" ["editor"]=> string(3) "jce" ["helpsite"]=> string(0) "" ["timezone"]=> string(2) "10" } } } ["_errors"]=> array(0) { } } ["_errorMsg"]=> NULL ["_errors"]=> array(0) { } }

Как уже быдо сказанно ранее все данные берутся из таблицы jos_users. В строке которую вернул скрипт видно что здесь есть все данные пользователя из данной таблицы. Конечно пароль вывести будет очень сложно, даже скорее невозможно, так как он закодирован в md5, но можно вывести на экран другую информацию, например, дата регистрации пользователя. Для вывода этой информации будем использовать параметр registerDate из массива.

$user = JFactory::getUser();

if (!$user->guest) {
echo 'Дата регистрации пользователя: ' . $user->registerDate;
}

Скрипт должен выдать подобный результат: Дата регистрации пользователя: 2012-08-21 15:26:40.