2012-01-20 3 views
1

У меня есть приложение, разработанное в zend framework. Проблема в том, что сеансы не уничтожаются при закрытии окна браузера. Есть идеи?Как убедиться, что сеанс уничтожен, когда браузер закрыт в zend

+4

Вы закрыли браузер, а не только окно страницы? – Oleg

+0

Я полностью закрыл браузер, но когда я перезагружаю сеансы страницы, все еще там, чего я не хочу. – poojitha

ответ

1

Используйте событие OnUnload отправить AJAX запрос на сервер, который уничтожит сессию

См: onunload

+0

Кажется, что сеансы уничтожены в хроме, но не в firefox. – poojitha

1

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

Если вы не используете Zend_Session::rememberMe(), его следует уничтожить после закрытия всех окон браузера.

+0

да, можете ли вы рассказать мне, как уничтожить сеанс? – poojitha

+0

Вы используете Zend_Session :: rememberMe() в любом месте кода? – Oleg

+0

Было бы более информативным, если бы вы отобразили свой код. – Oleg

0

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

0

Вы должны установить session.cookie_lifetime в 0 в php.ini или в вашем коде.

The value 0 means "until the browser is closed." 

http://www.php.net/manual/en/session.configuration.php#ini.session.cookie-lifetime

код:

session_set_cookie_params (0); 
+0

Знаете ли вы, есть ли API в Zend Framework, который также позволяет запускать этот параметр? – hakre

+0

http://framework.zend.com/manual/en/zend.session.global_session_management.html#zend.session.global_session_management.forgetme
Zend_Seesion :: forgetMe() – RockyFord

0

У меня такая же проблема, когда я использую Zend запомнить меня вариант, и я не нашел решение, но была хорошая идея, чтобы сохранить сессий используя обработчик zend db и удаляет старые файлы cookie, написав простой запрос на удаление истекших сеансов (если это задача cron, это хорошее решение).

Для получения дополнительной информации о ZEND сессии дб обработчика вы можете найти здесь,

http://framework.zend.com/manual/en/zend.session.savehandler.dbtable.html

Смежные вопросы