此文提到的“持久”是指web 的session会话持久。
有的时候,为了方便,我们需要在用户一直保持登录状态,即使用户没有做任何动作也不要因为超时而将让将用户的登录状态终止,除非用户主动关闭浏览器。
当然,实现这个方法有最简单的方式,那就是改变服务器的配置,将会话超时的时间设置更久,但是有些时候,我们只是做一个小的应用,或许我们的程序仅仅是放置在共享的虚拟主机上,这个时候我们可能无法更改服务器的设置,那么就将这个任务交给web程序去做吧。
其实实现的方法很简单,那就是用js定时去获取服务器端数据,赶在超时前去告诉服务器:“我还在做动作呢”。
实现方式很简单
首先,在服务器端建一个文件,随便取名,比如keepalive.php. 可以有内容,比如<?php echo “当前时间是:”.date(’Y-m-d H:i:s’);?>,也可以干脆为空。
然后在在公共的文件(比如 inc.footer.php)中写一段js,代码如下:
function keepAlive(){
var url="keepalive.php";
$.get(url,function(d){});
setTimeout ( "loadAdminStatus()", 120000 );
}
keepAlive();
当然,前提是你要引入 jquery 库。
如此这般之后,一旦打开网页,系统将会每120秒去通知一次服务器,只要服务器的超时时间在120秒外(若少于120秒,请修改120000为合适的值 单位是毫秒),登录状态便会永不超时。
