Как узнать какой пользователь на сайте прошёл авторизацию

Хочу сделать показ блока консультантов он-лайн, но только тех, которые авторизовались и сейчас на сайте.

Использую CDbHttpSession компонент.

Данные о залогиненом пользователе так понял хранятся в поле data в таблице sessions, но там всё сериализовано, даже не знаю как сделать грамотную выборку.

Посоветуйте :rolleyes:

Нашел ответ тут :blink:

http://www.yiiframework.com/forum/index.php?/topic/4330-users-online-feature/

И если есть, что добавить, пишите

Ага, осталось перегрузить там кучу всего. Я еще не сделал. Кто сделает - пишите, очень интересно и нужно.

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

для WebUser

в changeIdentity

$sessionId = md5(Yii::app()->session->sessionId);


$sql = "DELETE FROM UsersOnline WHERE sessionId='$sessionId'";


Yii::app()->db->createCommand($sql)->execute();


$sql = "INSERT INTO UsersOnline (sessionId, userName, userGender, userId)


    select '$sessionId', name, gender, id FROM Member WHERE id=$id";


Yii::app()->db->createCommand($sql)->execute();


$sql = "UPDATE Member SET lastVisit = UNIX_TIMESTAMP() WHERE id=$id";


Yii::app()->db->createCommand($sql)->execute();

в logout

$sessionId = md5(Yii::app()->session->sessionId);


$sql = "DELETE FROM UsersOnline WHERE sessionId='$sessionId'";


Yii::app()->db->createCommand($sql)->execute();

Затем в layout, добавляем Portlet с кэшированием на минуту, который получает залогиненных пользователей запросиком select distinct * from UsersOnline.

Плюс, элементарно добавить пользователю флажок "недобавлять к списку активных пользователей"(напр админа или партизанов) в модель юзера и подправить запросик в changeIdentity.