php登录超时检测功能实例详解


Posted in PHP onMarch 21, 2017

php登录超时检测功能实例详解

前言:

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文件即可,登录页面可不用调用!

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

PHP 相关文章推荐
PHP数组循环操作详细介绍 附实例代码
Feb 03 PHP
解析php中如何调用用户自定义函数
Aug 06 PHP
浅析echo(),print(),print_r(),return之间的区别
Nov 27 PHP
php使用cookie保存用户登录的用户名实例
Jan 26 PHP
php从csv文件读取数据并输出到网页的方法
Mar 14 PHP
PHP中isset与array_key_exists的区别实例分析
Jun 02 PHP
phpStudy访问速度慢和启动失败的解决办法
Nov 19 PHP
CI框架AR数据库操作常用函数总结
Nov 21 PHP
PHP实现可添加水印与生成缩略图的图片处理工具类
Jan 16 PHP
PHP针对redis常用操作实例详解
Aug 17 PHP
在Laravel 中实现是否关注的示例
Oct 22 PHP
PHP上传图片到数据库并显示的实例代码
Dec 20 PHP
php base64 编码与解码实例代码
Mar 21 #PHP
详解PHP中的序列化、反序列化操作
Mar 21 #PHP
php实现文件管理与基础功能操作
Mar 21 #PHP
THINKPHP截取中文字符串函数实例代码
Mar 20 #PHP
PHP随机获取未被微信屏蔽的域名(微信域名检测)
Mar 19 #PHP
php中通过eval实现字符串格式的计算公式
Mar 18 #PHP
CodeIgniter框架验证码类库文件与用法示例
Mar 18 #PHP
You might like
一个可查询所有表的“通用”查询分页类
2006/10/09 PHP
php做下载文件的实现代码及文件名中乱码解决方法
2011/02/03 PHP
Session的工作机制详解和安全性问题(PHP实例讲解)
2014/04/10 PHP
php文件夹的创建与删除方法
2015/01/24 PHP
php实现XSS安全过滤的方法
2015/07/29 PHP
CI(CodeIgniter)模型用法实例分析
2016/01/20 PHP
PHP闭包定义与使用简单示例
2018/04/13 PHP
PHP sdk文档处理常用代码示例解析
2020/12/09 PHP
基于jquery的网页SELECT下拉框美化代码
2010/10/28 Javascript
javascript实现页面内关键词高亮显示代码
2014/04/03 Javascript
js打开windows上的可执行文件示例
2014/05/27 Javascript
可编辑下拉框的2种实现方式
2014/06/13 Javascript
jquery结合CSS使用validate实现漂亮的验证
2015/01/29 Javascript
canvas实现刮刮卡效果
2017/03/14 Javascript
Vuex之理解Store的用法
2017/04/19 Javascript
Node.js v8.0.0正式发布!看看带来了哪些主要新特性
2017/06/02 Javascript
vue2.0 自定义日期时间过滤器
2017/06/07 Javascript
jQuery结合jQuery.cookie.js插件实现换肤功能示例
2017/10/14 jQuery
浅谈React和Redux的连接react-redux
2017/12/04 Javascript
Laravel整合Bootstrap 4的完整方案(推荐)
2018/01/25 Javascript
在vue中使用jointjs的方法
2018/03/24 Javascript
Js面试算法详解
2018/04/08 Javascript
详解如何构建一个Angular6的第三方npm包
2018/09/07 Javascript
轻量级富文本编辑器wangEditor结合vue使用方法示例
2018/10/10 Javascript
Element-ui el-tree新增和删除节点后如何刷新tree的实例
2020/08/31 Javascript
详解JavaScript 高阶函数
2020/09/14 Javascript
详解Python 中sys.stdin.readline()的用法
2019/09/12 Python
Python模块的定义,模块的导入,__name__用法实例分析
2020/01/07 Python
C/C++程序员常见面试题二
2015/11/19 面试题
介绍JAVA 中的Collection FrameWork(及如何写自己的数据结构)
2014/10/31 面试题
优秀管理者获奖感言
2014/02/17 职场文书
职业女性的职业规划
2014/03/04 职场文书
银行优秀员工事迹材料
2014/05/29 职场文书
运动会口号大全
2014/06/07 职场文书
公司人事专员岗位职责
2014/08/11 职场文书
有子女的离婚协议书怎么写(范本)
2014/09/29 职场文书