[英]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
重置为默认值)。
当浏览器关闭时,您无法销毁会话!!! 会话需要服务器端指令才能销毁。 您可以将会话设置为在闲置一段时间后销毁。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.