超时登陆验证

这几天上级让我做超时登陆验证,当时一听感觉很简单啊,用session,然后再改改配置文件不就是可以了吗,后来在网上看了看才知道这个配置文件不可以乱改,会影响程序运行的效率,接着我就只好试试别的办法了。
起初我采用的是js判断,使用定时器,鼠标移动和点击都会触发事件,然后问题来了,由于页面上有弹出层,弹出之后上一层的计时器依旧运行,虽然可以使用clearInterval可以清除,但是需要考虑的问题甚多,最后我是被焦点的问题给劝退了,如果有想看js写的可以私聊我。
于是我开始考虑第二种方法,我分析了一下网站的结构,所有的行为都继承自一个共有的base类,登陆的session等信息都存在此处,那么,也就是说每次有行为都会经过该类的构造方法,我们可以通过该方法存入两个session,第一个是行为时间session(“timer”,time()),时间取当前时间,之后在定义一个过期时间session(“sleep”,time()+3600),这样第一步算是完成了,行了,上代码

_user = session('user');
		if(!$this->_user){
			echo "";
		} else {
			session("timer",time());
			//一小时无操作自动退出
			session("sleep",time()+3600);
		}
	}
}

第二步,在前端页面采用ajax,每秒获取一次当前时间,在和过期时间做差,因此ajax访问的类一定不可以继承自base,我是建立了一个pub类,里面写入了一个isSleep方法,该方法用于判断和更新当前时间。

"true")));
		} else {
			exit(json_encode(array('timeout'=>"false")));
		}
	}
}

然后就是前端ajax了,这个就简单多了,只要是导入了jquery就能使用了,我用的是jquery+layer,layer是用于美化提示框的,可以无视




希望能对大家有所帮助吧。

你可能感兴趣的:(PHP)