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 相关文章推荐
第十五节--Zend引擎的发展
Nov 16 PHP
php 全局变量范围分析
Aug 07 PHP
基于php 随机数的深入理解
Jun 05 PHP
PHP imagegrabscreen和imagegrabwindow(截取网站缩略图)的实例代码
Nov 07 PHP
PHP实现通过中文字符比率来判断垃圾评论的方法
Oct 20 PHP
php查询mysql大量数据造成内存不足的解决方法
Mar 04 PHP
PHP设计模式之装饰者模式代码实例
May 11 PHP
PHP中SQL查询语句的id=%d解释(推荐)
Dec 10 PHP
Yii2实现自定义独立验证器的方法
May 05 PHP
PHP API接口必备之输出json格式数据示例代码
Jun 27 PHP
PHP中检查isset()和!empty()函数的必要性
Feb 13 PHP
Git命令之分支详解
Mar 02 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
一贴学会PHP 新手入门教程
2009/08/03 PHP
php和数据库结合的一个简单的web实例 代码分析 (php初学者)
2011/07/28 PHP
PHP加Nginx实现动态裁剪图片方案
2014/03/10 PHP
CodeIgniter启用缓存和清除缓存的方法
2014/06/12 PHP
joomla数据库操作示例代码
2016/01/06 PHP
PHP简单处理表单输入的特殊字符的方法
2016/02/03 PHP
thinkphp5使用无限极分类
2019/02/18 PHP
js 调整select 位置的函数
2008/02/21 Javascript
js停止输出代码
2008/07/20 Javascript
jQuery中(function(){})()执行顺序的理解
2013/03/05 Javascript
基于jquery实现一张图片点击鼠标放大再点缩小
2013/09/29 Javascript
纯js实现div内图片自适应大小(已测试,兼容火狐)
2014/06/16 Javascript
NodeJs——入门必看攻略
2016/06/27 NodeJs
详细谈谈AngularJS的子级作用域问题
2016/09/05 Javascript
Bootstrap Modal对话框如何在关闭时触发事件
2016/12/02 Javascript
详解JavaScript中的六种错误类型
2017/09/21 Javascript
详解html-webpack-plugin用法全解
2018/01/22 Javascript
详解ES6中的三种异步解决方案
2018/06/28 Javascript
浅析微信扫码登录原理(小结)
2018/10/29 Javascript
微信小程序按顺序同步执行的两种方式
2019/12/20 Javascript
原生小程序封装跑马灯效果
2020/10/21 Javascript
如何在vue中使用百度地图添加自定义覆盖物(水波纹)
2020/11/03 Javascript
vue点击Dashboard不同内容 跳转到同一表格的实例
2020/11/13 Javascript
Python  __getattr__与__setattr__使用方法
2008/09/06 Python
Python中dictionary items()系列函数的用法实例
2014/08/21 Python
Python深入学习之特殊方法与多范式
2014/08/31 Python
Python之csv文件从MySQL数据库导入导出的方法
2018/06/21 Python
详解pandas安装若干异常及解决方案总结
2019/01/10 Python
Django学习笔记之为Model添加Action
2019/04/30 Python
Python3标准库之threading进程中管理并发操作方法
2020/03/30 Python
Python基于pandas绘制散点图矩阵代码实例
2020/06/04 Python
投标授权委托书范文
2014/08/02 职场文书
党员“四风”方面存在问题及整改措施
2014/09/24 职场文书
综治维稳工作汇报
2014/10/27 职场文书
基层党支部承诺书
2015/04/30 职场文书
mysql查找连续出现n次以上的数字
2022/05/11 MySQL