我有一个网页,当用户关闭标签页或浏览器时,我正在销毁会话。这是我的剧本
window.onbeforeunload = function() {
document.write("<?php session_destroy();
?>");
}
我的问题是我只想在浏览器关闭时销毁会话。我应该使用哪个活动?这是否适用于所有浏览器。?请帮忙。
答案 0 :(得分:0)
默认情况下浏览器关闭时会破坏会话。这实际上是由PHP配置选项session.cookie_lifetime
控制的。 From the PHP manual:
session.cookie_lifetime指定发送到浏览器的cookie的生命周期(以秒为单位)。值0表示“直到浏览器关闭”。默认为0。
当您尝试做什么时,在浏览器关闭时明确销毁服务器端的会话数据,无法完成。没有办法告诉(至少从Javascript)是否正在重新加载页面或浏览器正在关闭 - 这两个事件都以同样的方式触发onunload()
和onbeforeunload()
。
关于这一点的另一点是,它将涉及在浏览器关闭时向服务器发送请求,这是不太可能被允许且无法依赖 - 毕竟,如果服务器无法响应怎么办?这可能会导致浏览器等待响应,这会破坏用户体验,浏览器开发人员永远不会允许它。