我有一些保存的会话。如果用户关闭浏览器窗口或单个选项卡或导航离开页面,我想销毁所有会话。我有什么方法可以做到这一点吗?
答案 0 :(得分:1)
现在所有现代标签式浏览器都非常复杂。因此,您只能依赖会话超时。不过没什么大不了的。你确定你真的需要这个吗?这会让用户感到痛苦。
答案 1 :(得分:0)
好吧,我正在为我的所有项目使用CodeIgniter。 CodeIgniter具有使用cookie存储数据的会话类。我可以在应用程序配置中设置cookie超时。将其设置为0将使cookie仅在页面打开时持续,并且当页面的所有选项卡在浏览器中关闭时,cookie将自动删除。
如果您不想使用其他框架,则可以使用cookie来保存会话数据,该会话数据将持续到用户关闭浏览器选项卡。使用setcookie编写Cookie数据,并从$_COOKIE
变量中读取。
答案 2 :(得分:0)
第一个设置$config['sess_expiration'] to 0
然而,由于system/libraries/Session.php
文件中的代码
接下来我们设置$config['sess_expiration'] to -1
这对我来说完全无效。当我登录时保存了会话变量,然后当我转到下一页时它就消失了。
答案 3 :(得分:-1)
与Donny的答案类似,但是您可以告诉内置的Session类将PHPSESSID
cookie更改为在浏览器关闭时到期,而不是使用Codeigniter:
session_set_cookie_params(0);
必须在您使用它的每个页面上session_start()
之后调用它(否则它会从ini参数session.cookie_lifetime
重置为默认值。)
答案 4 :(得分:-1)
浏览器关闭时你无法破坏会话!会话需要销毁服务器端指令。您可以将会话设置为在一段时间不活动后销毁。