Очистка значений сеанса при закрытии вкладки - PullRequest
6 голосов
/ 20 августа 2010

Насколько я понимаю, переменная сеанса очищается, когда пользователь закрывает свой браузер. Есть ли способ очистить переменную сеанса, когда пользователь закрывает вкладку в браузере?

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

Ответы [ 2 ]

2 голосов
/ 20 августа 2010

Переменные сеанса находятся на стороне сервера, а закрытие вкладки - это действие на стороне клиента, поэтому вам нужно каким-то образом отправить на сервер сигнал для очистки этих переменных сеанса.

Самым очевидным способом для меня было бы использование метода onbeforeunload браузера и ajaxical отправка чего-либо на сервер для очистки сеанса.

Хотя это опасная территория. Вы уверены, что не хотите, чтобы пользователь мог открывать и использовать более одной вкладки вашего сайта одновременно? Поскольку, если ваш сайт открыт на двух вкладках, этот метод очистит сеанс при закрытии одной вкладки, сделав другую вкладку бесполезной (не бесполезной, возможно, из-под этой страницы был извлечен коврик, теперь этот сеанс ушел).

0 голосов
/ 20 августа 2010

Проверьте следующую ссылку для лучшего ответа: Почему закрытие вкладки не удаляет файл cookie сеанса? .

Что вы можете сделать, это добавить некоторый случайный текст в конец URL-адреса и сохранить его для справки, и если пользователи приходят с новой вкладки и к ним не добавлен случайный текст, вы можете определить, какой пользователь пришел с другой вкладки.

...