Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Сессии


Автор: SkyAleks 25.1.2006, 18:10
Есть страничка к которой обращаются пользователи.
Можно ли как-то с помощью сессий определить что к этой страничке в данный момент уже обращён какой-нибудь пользователь(с другой машины)?
Тоесть если на данный момент к страничке обращен кто-то то выводиться сообщение об этом.
Если можно, то как это реализовать?

Автор: Bikutoru 25.1.2006, 18:27
Цитата(SkyAleks @ 25.1.2006, 19:10 Найти цитируемый пост)

Можно ли как-то с помощью сессий определить что к этой страничке в данный момент уже обращён какой-нибудь пользователь(с другой машины)?

С помощью сессий никак. Если есть необходимость это сделать, то имеет смысл использовать какой-то разделяемый, т.е. достутный всем пользователям, ресурс (файлы либо БД).
При каждом заходе на страницу добавляешь запись, что он тут, а уход пользователя со страницы определить нельзя. Это можно сделать только по таймауту...

Автор: R.M. 26.1.2006, 01:54
Bikutoru
Цитата(Bikutoru @ 25.1.2006, 19:27 Найти цитируемый пост)

При каждом заходе на страницу добавляешь запись, что он тут

Проще тогда менять в записи 0 на 1 при приходе и 1 на 0 при уходе (можно кнопку выхода сделать)

Автор: Bikutoru 26.1.2006, 09:48
Цитата(Куксикус @ 26.1.2006, 02:54 Найти цитируемый пост)

Проще тогда менять в записи 0 на 1 при приходе и 1 на 0 при уходе

Имхо, лучше хранить информацию о пользователях, зашедших на страницу (IP, IP + какие-то отправленные браузером заголовки, идентификатор сессии или логин пользователя, если доступ осуществляется для зарегистрированных пользователей). Понять по этим данным, есть здесь кто-то или нет, элементарно, а если вдруг потребуется определять, кто именно здесь есть, то переделывать придется немного :-)
Цитата(Куксикус @ 26.1.2006, 02:54 Найти цитируемый пост)

можно кнопку выхода сделать

Можно, но без таймаута все равно не обойтись, т.к. не факт, что ее нажмут... Можно, конечно, Javascript'ом на onunload что-то повесить, но не факт, что JS будет включен. Да и таймаут не панацея - пользователь может открыть страницу и уйти погулять на часок, таймаут прошел, пользователь удален из списка "здешних", а страница открыта. Можно, конечно, сделать, чтобы каждую минуту (например) с помощью JS серверу посылалось сообщение, что пользователь открыл страницу, но это точно лишняя нагрузка на сервер.
Т.е. гарантированно определить, что пользователь ушел со страницы нельзя.


Автор: SkyAleks 27.1.2006, 17:43
Я сделал так - В базу записываю айпиху и время.. при заходе на страницу просто смотрю есть ли запись в базу которая была внесена не позже 10 минут назад. если есть то Нужное мне действие, а также просто удаляю все записи из базы у которых время больше 10 минут.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)