文档章节

php登录超时检测

Mr_Azaz
 Mr_Azaz
发布于 2017/03/21 03:29
字数 479
阅读 71
收藏 0

php登录超时问题,当用户超过一定时间没有操作页面时自动退出登录,原理是通过js进行访问判断的!代码如下(以thinkphp5.0版本为例)

1、创建登录版块控制器:

<?php
namespace app\manage\control;
use \think\Controller;

class Main extends Controller{

    protected $request;

	public function _initialize(){
		$this->request = \think\Request::instance();
	}

	public function login(){
		if($this->request->method() == "POST"){
			$data = $this->request->param();
	        //这里为登录验证(自行补充)
            .......
            //通过登录提交的信息获取数据库中的用户,并记录ID($id)
            cookie('ADMIN_ID',$result["id"]);//cookie缓存
            cookie('LOGIN_TIME',Request::instance()->time()+3600);//记录登录时间,并缓存1小时

		}
		return view();
	}
    
    // 检测是否登录超时(js调用,url为:http://您的域名/manage/main/loginLosetime)
	public function loginLosetime(){
		$logintime = cookie('LOGIN_TIME');
		$time = request()->time();
		if($time > $logintime){
			return json(['code'=>1,'msg'=>'登录超时!','url'=>url('main/login')]);
		}else{
			return json(['code'=>0]);
		}
	}

}

2、创建公共控制器(所有需要验证登录的控制器都继承该控制器)

<?php

namespace app\common\control;
use \think\Controller;
class AdminBase extends Controller{
    protected $request;
    public function _initialize(){
		parent::_initialize();
        $this->request = \think\Request::instance();
		$this->checkLogin();//检测登录
		$this->doAction();//记录动作
	}
    protected function checkLogin(){

		$cookie_admin_id = cookie('ADMIN_ID');
		if(!empty($cookie_admin_id)){
			//获取登录用户信息
            .......
		}else{
			if($this->request->isAjax()){
				return $this->error('您还没有登录!',url('main/login'));
			}else{
				header("Location:".url("main/login"));
				exit();
			}
		}
	}
    // 页面操作记录
    protected function doAction(){
		$logintime = cookie('LOGIN_TIME');//获取缓存登录超时时间
		$time = request()->time();//当前时间
        //判断当前时间是否大于缓存时间 或者 超时时间小于60秒后,自动多加1个小时时间
		if($time > $logintime || ($time - $logintime) < 60){
			$newLogintime = $logintime + 3600;
			cookie('LOGIN_TIME',$newLogintime);
		}
	}
}

3、js文件

$.ajaxSetup({
    cache: false
});
$(function(){
	setInterval(function() {
		loginLosetime()
	}, 360000);//设置1小时自动执行 loginLosetime 函数(时间可自行调整)
});
// 登录超时检测
function loginLosetime(){
	$.get(AJAX_URL+'main/loginLosetime',function(res){
		if(res.code == 1){
			window.location.href = res.url;
		}
	});
}

最后在所有的页面调用上诉js文件即可,登录页面可不用调用!

欢迎大家参考指正!

© 著作权归作者所有

共有 人打赏支持
Mr_Azaz
粉丝 0
博文 15
码字总数 5001
作品 0
广州
程序员
私信 提问
thinkphp5.0-php登录超时检测功能的类

<?php //创建登录版块控制器 namespace appmanagecontrol; use thinkController; class Main extends Controller{ protected $request; public function _initialize(){ $this->request = th......

编译中ing
01/04
0
0
如何让所有模块先检测是否有登录

做了一个后台,做了登录和检测的,可是只检测一个模块,就是那个用户那个模块写的,所以只检测这个,不登录,直接点解某模块某方法也可以登录了。所以必须要所有模块进去之前就需要检测是否登...

kobe52099
2018/06/29
0
0
centos 修改phpmyadmin的登录超时 (1440 秒未活动),请重新登录。

修改phpmyadmin长时间未操作,提示登录超时情况1440 我这是centos 7.4 1、 vim /etc/php.ini 找到这一行修改时间,session.gc_maxlifetime = 7200 2、vim /usr/share/phpMyAdmin/libraries/c...

amunlinux
2018/07/17
0
0
ecshop登录超时、session过期的解决办法

1 在includescls_session.php中修改 这段代码中的数字。此数字单位为秒,前台登录和后台登陆都是调用这里设置的时间。 2 关于在后台编辑产品经常由于时间长而超时,可以在登录的时候,勾起“...

rin9958
2016/03/29
54
0
Spring Security——session管理

Spring Security通过http元素下的子元素session-management提供了对Http Session管理的支持。 1.1 检测session超时 Spring Security可以在用户使用已经超时的sessionId进行请求时将用户引导到...

引鸩怼孑
2015/05/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

SpringBoot引入第三方jar包或本地jar包的处理方式

在开发过程中有时会用到maven仓库里没有的jar包或者本地的jar包,这时没办法通过pom直接引入,那么该怎么解决呢 一般有两种方法 - 第一种是将本地jar包安装在本地maven库 - 第二种是将本地j...

独钓渔
46分钟前
2
0
五、MyBatis缓存

一、MyBatis缓存介绍 缓存的使用可以明显的加快访问数据速度,提升程序处理性能,生活和工作中,使用缓存的地方很多。在开发过程中,从前端-->后端-->数据库等都涉及到缓存。MyBatis作为数据...

yangjianzhou
今天
2
0
最近研究如何加速UI界面开发,有点感觉了

最近在开发JFinal学院的JBolt开发平台,后端没啥说的,做各种极简使用的封装,开发者上手直接使用。 JBolt开发平台包含常用的用户、角色、权限、字典、全局配置、缓存、增删改查完整模块、电...

山东-小木
今天
3
0
《月亮与六便士》的读后感作文3000字

《月亮与六便士》的读后感作文3000字: 看完英国作家威廉.萨默塞特.毛姆所著《月亮与六便士》(李继宏译),第一疑问就是全书即没提到“月亮”,也没提到“六便士”。那这书名又与内容有什么...

原创小博客
昨天
2
0
微信网页授权获取用户信息(ThinkPHP5)+ 微信发送客服消息(一)

以thinkphp5为实例,创建控制器 class Kf extends Controller { /** * [protected description]微信公众号appid * @var [type] */ protected $appid = "xxxxxxxxxxxxxxx"; /** * [protected......

半缘修道半缘君丶
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部