您的位置:首页 > 编程语言 > PHP开发

php学习笔记-4.登录超时的设置

2016-08-03 09:25 465 查看

需求背景:

整个站点(除了登录入口页面外),用户成功登录后,若长时间未操作后,点击页面站点菜单,提示用户登录超时,同时跳转到登录页面。项目使用thinkphp框架,版本是3.1.3

实现:

思路:

用户在登录的时候,在session中记录用户的登录时间,在common.php文件中创建CheckAction类,继承自Action类,所有登录后的控制器均使其继承CheckAction,在CheckAction构造函数中添加检查和更新登录时间,若超时则跳转到登录页面的处理逻辑。

编码实现:

        登录验证账号密码时,用户身份验证成功后记录登录时间:

function userAgreed($username, $password){
$db = M('user');
$condition['email'] = $username;
$condition['password'] = $password;
$result = $db->where($condition)->find();

//dump($result);

if(isset($result)){
session('logintime', time());
return true;
}else{
return false;
}
}
    CheckAction类编码:

Class CheckAction extends Action{
public function __construct(){
parent::__construct();
$this->checkSession();
}

public function checkSession(){
//set out time 1 minutes
$nowtime = time();
$s_time = session('logintime');
if(($nowtime - $s_time) > 10){
session('logintime', null);
$this->error('当前用户未登录或登录超时,请重新登录', '/thinkphp/index.php');
}else{
session('logintime', $nowtime);
}
}
}

    系统除登录页面控制器外,其他控制器均继承自CheckAction:

class MainAction extends CheckAction

class OrderAction extends CheckAction

        效果:

设置超时时间为10秒钟,登录成功后等待10秒,再点击页面其他菜单,页面提示登录超时,并跳转到登录页面:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: