Предотвращение вызова onbeforeunload () при обновлении - PullRequest
1 голос
/ 14 октября 2011

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

window.onbeforeunload = function() { 
document.write("<?php session_destroy();
?>");
 }

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

1 Ответ

0 голосов
/ 14 октября 2011

Сеансы уничтожаются при закрытии браузера по умолчанию.На самом деле это контролируется параметром конфигурации PHP session.cookie_lifetime. Из руководства по PHP :

session.cookie_lifetime указывает время жизни куки в секундах, которое отправляется в браузер.Значение 0 означает «пока браузер не будет закрыт».По умолчанию 0.

То, что вы пытаетесь сделать, явно уничтожить данные сеанса на стороне сервера, когда браузер закрыт, сделать невозможно.Невозможно сказать (по крайней мере из Javascript), перезагружается ли страница или закрывается ли браузер - оба события запускают onunload() и onbeforeunload() одинаково.

Другой момент, касающийсяэто связано с отправкой запроса на сервер при закрытии браузера, что вряд ли будет разрешено и на него нельзя будет положиться - в конце концов, что, если сервер не отвечает?Это может привести к зависанию браузера при ожидании ответа, что разрушит пользовательский опыт, и разработчики браузера никогда не допустят его.

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