繁体   English   中英

如果用户关闭浏览器窗口或浏览php中的页面,如何销毁会话?

[英]How can I destroy sessions if user closes the browser window or navigates away from page in php?

我保存了一些会话。 如果用户关闭浏览器窗口或单个选项卡或离开页面,我想销毁所有会话。 有什么办法可以做到吗?

如今,使用所有现代的选项卡式浏览器都非常复杂。 因此,您只能依靠会话超时。 不过没什么大不了的。 您确定您确实需要吗? 这会使用户感到苦恼。

首先将$config['sess_expiration'] to 0

但是,由于system/libraries/Session.php文件中的代码,这会导致创建实际上持续2年的cookie。

接下来我们将$config['sess_expiration'] to -1

这对我来说不起作用。 当我登录它时,保存了会话变量,然后当我进入下一页时,它消失了。

好吧,我正在为我的所有项目使用CodeIgniter CodeIgniter的会话类使用cookie存储数据。 我可以在应用程序配置中设置Cookie超时。 设置为0将使cookie仅在打开页面时才保留,并且在浏览器中关闭页面的所有选项卡时,cookie将被自动删除。

如果您不想使用其他框架,则可以使用Cookie来保存会话数据,这些数据将一直持续到用户关闭浏览器选项卡。 使用setcookie写入cookie数据,然后从$_COOKIE变量中读取它。

与Donny的答案类似,但是不用使用Codeigniter,您可以告诉内置的Session类更改PHPSESSID cookie,使其在浏览器关闭时过期:

session_set_cookie_params(0);

必须在使用它的每个页面上在session_start()之后调用它(否则,它将从ini参数session.cookie_lifetime重置为默认值)。

当浏览器关闭时,您无法销毁会话!!! 会话需要服务器端指令才能销毁。 您可以将会话设置为在闲置一段时间后销毁。

研究http://www.php.net/manual/en

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM