[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Действие по окончанию сессии (вн.)
Gadzilla
При залогинивании в систему, в строке пользователя в параметре "status" устанавливается значение 1 (онлайн), при нажатии на кнопку "Выход" устанавливается значение 0 (оффлайн) и сессия удаляется.
Вопрос такой: если пользователь не нажал кнопку "Выход", а просто закрыл окно - сессия через какое-то время истекает, но параметр в БД остается на 1 (онлайн). Можно ли как-то отследить конец конкретной сессии, и чтобы при ее окончании значение в БД конкретному пользователю менялось на 0 (оффлайн)?



Спустя 11 минут, 55 секунд (7.03.2011 - 19:58) inpost написал(а):
А кто тебе сказал, что надо ставить статус 1 (онлайн) и 0 - оффлайн?
Надо дату последнего действия. Открыл страницу: записалась дата, открыл - новая дата. Проверяешь не прошло ли 10-15 минут с момента последней даты. Если более - то офф-лайн.

Спустя 13 минут, 47 секунд (7.03.2011 - 20:12) Gadzilla написал(а):
Не в этом вопрос.
Не совсем понял, почему так критично записывать именно даты, вместо значения 1 и 0. В вашем случае все равно не решается вопрос - если пользователь крестиком закрыл окно, и сессия закончилась... То где будут происходить эти операции, по сверению дат?

Спустя 3 минуты, 47 секунд (7.03.2011 - 20:16) inpost написал(а):
Ничего не понимаю, зашел в профиль пользователя, проверил его последний он-лайн, время не то, значит он в офф-лайне!
При чём тут 1 или 0? Закрыл: последнее действие в 20:40, в 20:55 - он уже в оффлайне. Зашел на страницу в 20:35, закрыл крестиком, БД не обновлялась, в 20:50 уже в офф-лайне. Не надо помещать в БД его статус вообще, на странице сравниваешь даты и выдаёшь нужную информацию другому пользователю.

Спустя 4 минуты, 39 секунд (7.03.2011 - 20:20) Gadzilla написал(а):
Сейчас попробую объяснить.
Есть некоторые действия, которые должны быть доступны для выполнения только между двумя пользователями, которые точно находятся онлайн. Т.е. выполняется проверка, если один и другой пользователь сейчас на сайте - все в порядке, запускаем скрипт. Если один из них в оффлайне - вылетает ошибка, что пользователь сейчас не находится на сайте.

edit:
Кажется, понял что вы имеете ввиду. Если сделать "таймаут" оффлайна 15 минут, то даже при обращении другого пользователя к какой-то функции, при которой второй пользователь должен быть онлайн, сверяется время последнего рефреша из строки пользователя с текущим временем, и если оно более 15-ти минут - выбрасывается результат о том, что пользователь оффлайн.

Спустя 33 минуты, 57 секунд (7.03.2011 - 20:54) sharki написал(а):
Gadzilla
Есть вариант использоваь AJAX, поставить ему например какой нить инвервал...если там допустим страница активна, с помощью событий, то отправить на сервер единичку, есть еще в JS функция, которая запускается перед закрытием страницы, можешь так же отправить AJAX'ом нолик и т.п

PS AJAX сам понимаешь, отправляешь инфу на сервер, так же редактируешь сессии, при этом можешь удалить сессию, когда пользователь закрыл страницу, и пришел ответ с аякса.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.