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执行速度全攻略(下)
Oct 09 PHP
Apache环境下PHP利用HTTP缓存协议原理解析及应用分析
Feb 16 PHP
使用XDebug调试及单元测试覆盖率分析
Jan 27 PHP
PHP关联数组的10个操作技巧
Jan 21 PHP
PHP中基于ts与nts版本- vc6和vc9编译版本的区别详解
Apr 26 PHP
php判断手机访问还是电脑访问示例分享
Jan 20 PHP
PHP5各个版本的新功能和新特性总结
Mar 16 PHP
微信随机生成红包金额算法php版
Jul 21 PHP
阿里云PHP SMS短信服务验证码发送方法
Jul 11 PHP
PHP读取word文档的方法分析【基于COM组件】
Aug 01 PHP
php校验公钥是否可用的实例方法
Sep 17 PHP
laravel 创建命令行命令的图文教程
Oct 23 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中strlen和mb_strlen函数的区别
2014/03/07 PHP
PHP获取一年有几周以及每周开始日期和结束日期
2015/08/06 PHP
PHP序列化操作方法分析
2016/09/28 PHP
PHP实现获取第一个中文首字母并进行排序的方法
2017/05/09 PHP
IE中直接运行显示当前网页中的图片 推荐
2006/08/31 Javascript
获取当前网页document.url location.href区别总结
2008/05/10 Javascript
jquery创建一个新的节点对象(自定义结构/内容)的好方法
2013/01/21 Javascript
使用js获取地址栏中传递的值
2013/07/02 Javascript
JavaScript截取字符串的2个函数介绍
2014/08/27 Javascript
jQuery实现点击图片翻页展示效果的方法
2015/02/16 Javascript
jQuery包裹节点用法完整示例
2016/09/13 Javascript
浅谈js常用内置方法和对象
2016/09/24 Javascript
jquery处理checkbox(复选框)是否被选中实例代码
2017/06/12 jQuery
JS排序算法之希尔排序与快速排序实现方法
2017/12/12 Javascript
vue项目动态设置页面title及是否缓存页面的问题
2018/11/08 Javascript
深入了解js原型模式
2019/05/30 Javascript
nodejs使用node-xlsx生成excel的方法示例
2019/08/22 NodeJs
原生JS与CSS实现软件卸载对话框功能
2019/12/05 Javascript
使用vue编写h5公众号跳转小程序的实现代码
2020/11/27 Vue.js
python模拟登陆Tom邮箱示例分享
2014/01/13 Python
给Python初学者的一些编程技巧
2015/04/03 Python
为Python程序添加图形化界面的教程
2015/04/29 Python
将Python代码打包为jar软件的简单方法
2015/08/04 Python
Jupyter notebook在mac:linux上的配置和远程访问的方法
2019/01/14 Python
python自动化实现登录获取图片验证码功能
2019/11/20 Python
python实现超市商品销售管理系统
2019/11/22 Python
Python中Subprocess的不同函数解析
2019/12/10 Python
vscode+PyQt5安装详解步骤
2020/08/12 Python
Python GUI之tkinter窗口视窗教程大集合(推荐)
2020/10/20 Python
html5教程调用绘图api画简单的圆形代码分享
2013/12/04 HTML / CSS
乐高积木玩具美国官网:LEGO Shop US
2016/09/16 全球购物
优秀党员获奖感言
2014/02/18 职场文书
无私奉献演讲稿
2014/09/04 职场文书
爱国电影观后感
2015/06/19 职场文书
windows安装python超详细图文教程
2021/05/21 Python
阿里云国际版 使用Nginx作为HTTPS转发代理服务器
2022/05/11 Servers