Такая ситуация, при заходе пользователя на сайт под своим логином и паролем регистрируется сессия с его именем и в БД меняется поле online на 1. После нажатия кнопки Выход, сессия убивается и поле online меняется на 0.
Собственно вопрос, как убивать сессию и менять поле online на 0, если пользователь не нажимал кнопки Выход, а просто закрыл браузер? Или например через 10 минут бездействия
Спустя 18 минут, 28 секунд (5.10.2010 - 16:24) waldicom написал(а):
Поставить время жизни сессии на 10 минут? Это в инишнике
Спустя 6 минут, 28 секунд (5.10.2010 - 16:30) IPnex написал(а):
Цитата (waldicom @ 5.10.2010 - 16:24) |
Поставить время жизни сессии на 10 минут? Это в инишнике |
Я ставил для теста на 10 секунд через ini_set('session.gc_maxlifetime', 10) и ini_set('session.cookie_lifetime', 10), но почему-то не удалается
Спустя 16 минут, 20 секунд (5.10.2010 - 16:47) Семён написал(а):
Держать hash сессии в базе и очищать его по истечению времени не активности.
Спустя 11 минут, 9 секунд (5.10.2010 - 16:58) IPnex написал(а):
Цитата (Семён @ 5.10.2010 - 16:47) |
Держать hash сессии в базе и очищать его по истечению времени не активности. |
А как задать это время неактивности?
Спустя 10 часов, 46 минут, 46 секунд (6.10.2010 - 03:45) Ice написал(а):
Цитата (IPnex @ 5.10.2010 - 17:30) |
но почему-то не удалается |
что именно? сессионная кука? она и не удалится
Спустя 1 день, 12 часов, 28 минут, 48 секунд (7.10.2010 - 16:14) IPnex написал(а):
Цитата (Ice @ 6.10.2010 - 03:45) | ||
что именно? сессионная кука? она и не удалится |
Нет, я просто хотел сделать так: если пользователь не нажимает "Выход", а просто закрывает браузер, то через какое-то время должна вызыватся функция session_destroy() и в БД обновлятся поле online на 0 и все. Но проблема в том, что я не пойму как проверить активность пользователя или закрытие браузера. Или если моя логика не верна, то подскажите пожалуйста как сделать по другому
Спустя 22 часа, 32 минуты, 53 секунды (8.10.2010 - 14:46) zx-spectr написал(а):
В таблице, где хранишь онлайн пользователь или нет, храни время последнего обращения пользователю к сайту и сбрасывай поле online на 0, у пользоватетлей которые бездействовали в течении например 30 минут.
Спустя 24 минуты, 49 секунд (8.10.2010 - 15:11) IPnex написал(а):
Цитата (zx-spectr @ 8.10.2010 - 14:46) |
В таблице, где хранишь онлайн пользователь или нет, храни время последнего обращения пользователю к сайту и сбрасывай поле online на 0, у пользоватетлей которые бездействовали в течении например 30 минут. |
Так дело в том что нужно запускать какой-нибудь счетчик, который будет отсчитывать эти 30 минут. PHP скрипт не может же сам отсчитывать это время, он запустился один раз, когда его вызвали и все.
Спустя 1 час, 24 минуты, 33 секунды (8.10.2010 - 16:36) zx-spectr написал(а):
Ну вот когда запустился, считывай с БД записи у которых online = 1 и поле с датой обращения старше 30 минут, у всех найденных записей сбрасывай флаг online.