Session_End код в браузере - PullRequest
       26

Session_End код в браузере

1 голос
/ 12 августа 2009

У меня есть метод, который мне нужно запустить на Session_end. Можно ли как-нибудь обеспечить выполнение кода, когда пользователь закрывает свой браузер? Это может быть двойной квестон. Я видел один ответ, выполняющий вызов ajax unload или чего-то еще, но я не хочу, чтобы это срабатывало каждый раз, когда пользователь уходит со страницы, когда он закрывает свой браузер.

Спасибо, ~ Ск

Ответы [ 2 ]

2 голосов
/ 12 августа 2009

Session_end ненадежен. Неважно, что ты делаешь.

Session_end срабатывает только при использовании сеанса inprocess. Если вы используете сервер состояния сеанса или сеанс SQL, session_end не срабатывает.

При использовании в сеансе процесса session_end срабатывает, только если вы сохранили что-то в сеансе. Если вы не используете сеанс, session_end никогда не сработает.

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

2 голосов
/ 12 августа 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...