只要浏览器处于打开状态,就保持会话

时间:2013-01-04 14:32:15

标签: php session

我有一个PHP应用程序,可以保持会话跟踪。我希望应用程序在关闭浏览器之前保持用户会话。在浏览器关闭之前,会话不应过期。我是一名java开发人员,我是PHP的新手。

会话不应该在浏览器关闭之前超时。无论如何,一旦浏览器关闭,会话将在一段时间后超时。

2 个答案:

答案 0 :(得分:1)

可以使用Javascript检测页面或浏览器窗口何时关闭。但是,这不应该依赖,因为有很多方法可以让用户停止浏览网站而不会引发通知(浏览器崩溃,网络或停电等)。

标准答案是不要打扰这种事情 - 无论如何,PHP会话都有一个超时机制。如果用户未在给定时间段内加载任何页面,则会话将被删除。这是标准的,您不必担心它。您可能想要做的唯一事情是根据您希望用户使用该网站的方式来调整超时持续时间。

如果真的希望关注用户并确保他们仍然在网站上活跃,并在他们停止后立即终止会话,我想你会做类似写的事情一个简单的Ajax ping,以便页面每隔几分钟(或任何你想要的间隔)向服务器发送一个请求。

这将使会话保持活动,即使会话超时相当短,直到浏览器停止发送ping(这可能是因为浏览器窗口已关闭,但是如果浏览器崩溃,或者网络连接断开,或者用户拉动电源插头等。

这样做的缺点是它会为你的服务器带来相当多的额外流量(并为你做了很多额外的工作),而没有真正的好处而只是让会话自己超时。

答案 1 :(得分:0)

我知道这个问题有点陈旧但是因为它仍然与我的相关性如何:

function keepMeAlive() {
    var img = new Image();
    img.src = YOUR_URL + 'images/empty.gif?' + new Date().getTime();
}
window.setInterval(keepMeAlive, 600000);

现在创建一个1x1像素的gif图像并将其上传到指定的URL。上面的代码将每10分钟加载一次,从而使会话保持活跃状态​​。