Yvision.kzYvision.kz
kk
Разное
Разное
399 773 постов41 подписчиков
Всяко-разно
0
08:53, 14 апреля 2010

Список пользователей онлайн

Разворошим это забытое всеми сообщество.

Надеюсь это родит ещё ряд постов (хотя по традиции, с меня ещё один пост).

Кстати, пост о необходимости форматирования исходных кодов так и не попал на главную. Конечно, ведь там не про Баркемп.

Поэтому придется все исходные коды выложить на сторонний ресурс. Трахаться со здешним редактором желания нет.

В общем, задача такая: узнать кто же у нас шарится по сайту в данный момент?

Что-то типа "who is online"

 

 

 

Узнаем мы эту информацию конечно же из сессии пользователя.

В ЗФ есть возможность хранить сессии в базе данных. Для этого используется класс Zend_Session_SaveHandler_DbTable.

Им мы и воспользуемся, слегка расширив его под наши нужды.

Добавляем в таблицу session поле user_id, где будем хранить ID активного юзера. По этой ссылке с крутым номером SQL-запрос: http://codepaste.ru/3333/

Зеркало:http://www.copypastecode.com/26475/

В файле Bootstrap.php создаем функцию _initSession() http://codepaste.ru/3334/

Зеркало:http://www.copypastecode.com/26479/

App_SessionService - это файл SessionService.php в папке App (папка для собственных классов), который наследует класс Zend_Session_SaveHandler_DbTable

Копируем и переписываем функции __construct и write и добавляем определение переменной поля user_id и функцию, которая берет из Zend_Auth необходимые данные.

Вот его листинг: http://codepaste.ru/3335/

Зеркало: http://www.copypastecode.com/26483/

Вообще, можно собирать любую информацию о пользователе (IP, браузер и т.д.). Для этого достаточно добавить соответствующие поля в таблицу и изменить код, подобно добавлению 'user_id'.

Как-то так. Вопросы, замечания и более крутой код как всегда в комменты. :)

0