做了一个后台,做了登录和检测的,可是只检测一个模块,就是那个用户那个模块写的,所以只检测这个,不登录,直接点解某模块某方法也可以登录了。所以必须要所有模块进去之前就需要检测是否登录
网上搜了一个类似的,他是检测登录时间是不是到了。如下:
由于每个操作的地方都需要先判断一下登录是否超时,就想到用构造函数,但是每个类都写一个构造函数又不方便,所以写了一个公共类,这个公共类里面还可以写许多其他的通用方法,如:_initialize 方法
新建一个公共Action叫CommAction.class.php
代码如下:
class CommAction extends Action {
public function __construct() {
parent::__construct();
$this->checkAdminSession();
}
public function checkAdminSession() {
//设置超时为10分
$nowtime = time();
$s_time = $_SESSION['logintime'];
if (($nowtime - $s_time) > 600) {
unset($_SESSION['logintime']);
$this->error('当前用户未登录或登录超时,请重新登录', U('login/loginpage'));
} else {
$_SESSION['logintime'] = $nowtime;
}
}
}
说明:以上的所有action都需要集成公共action。除了登录模块。所以登录方法最好写在公共的模块里面
我的后台是检测是否登录而已,所以只需要更改检测方法。
我用的是cookie来传值,不是用session
我的CommonAction代码如下:
class CommonAction extends Action{
public function __construct(){
parent::__construct();
$this->checkAdminCookie();
}
public function checkAdminCookie(){
$cookieguanliid=cookie('guanliid');
if(empty($cookieguanliid)){
$this->assign("jumpUrl","__APP__/public/login");
$this->error('请先登录');
}
}
}
转载于:https://blog.51cto.com/3715444/1349529