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提取中英文词语以及数字的首字母的方法介绍
Apr 23 PHP
ThinkPHP表单自动验证实例
Oct 13 PHP
php多次include后导致全局变量global失效的解决方法
Feb 28 PHP
PHP随机生成信用卡卡号的方法
Mar 23 PHP
php设置页面超时时间解决方法
Sep 22 PHP
PHP制作登录异常ip检测功能的实例代码
Nov 16 PHP
Yii2中使用asset压缩js,css文件的方法
Nov 24 PHP
thinkPHP中volist标签用法示例
Dec 06 PHP
Yii框架实现的验证码、登录及退出功能示例
May 20 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
Dec 18 PHP
php+ajax实现文件切割上传功能示例
Mar 03 PHP
Thinkphp 框架基础之入口文件功能、定义与用法分析
Apr 27 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+mysql事务rollback&amp;commit示例
2010/02/08 PHP
PHP 简易输出CSV表格文件的方法详解
2013/06/20 PHP
将php数组输出html表格的方法
2014/02/24 PHP
laravel框架分组控制器和分组路由实现方法示例
2020/01/25 PHP
关于hashchangebroker和statehashable的补充文档
2011/08/08 Javascript
jQuery 借助插件Lavalamp实现导航条动态美化效果
2013/09/27 Javascript
实现51Map地图接口(示例代码)
2013/11/22 Javascript
javascript实现信息的显示和隐藏如注册页面
2013/12/03 Javascript
jQuery中ajax和post处理json的不同示例对比
2014/11/02 Javascript
Bootstrap每天必学之按钮(一)
2015/11/24 Javascript
jquery.cookie实现的客户端购物车操作实例
2015/12/24 Javascript
如何使用vuejs实现更好的Form validation?
2017/04/07 Javascript
vue项目设置scrollTop不起作用(总结)
2018/12/21 Javascript
[02:24]DOTA2痛苦女王 英雄基础教程
2013/11/26 DOTA
从零学python系列之教你如何根据图片生成字符画
2014/05/23 Python
编写自定义的Django模板加载器的简单示例
2015/07/21 Python
Python中内建函数的简单用法说明
2016/05/05 Python
浅析AST抽象语法树及Python代码实现
2016/06/06 Python
Python实现将16进制字符串转化为ascii字符的方法分析
2017/07/21 Python
python实现邮件自动发送
2019/08/10 Python
使用python实现对元素的长截图功能
2019/11/14 Python
Python函数的默认参数设计示例详解
2019/12/01 Python
python中rb含义理解
2020/06/18 Python
python学习笔记之多进程
2020/08/06 Python
django有哪些好处和优点
2020/09/01 Python
Anaconda的安装与虚拟环境建立
2020/11/18 Python
html5 touch事件实现触屏页面上下滑动(二)
2016/03/10 HTML / CSS
J2SDK1.5与J2SDK5.0有什么区别
2012/09/19 面试题
办公室内勤工作职责
2013/12/11 职场文书
办公室前台的岗位职责
2013/12/20 职场文书
高中同学聚会邀请函
2014/01/11 职场文书
研究生考核个人自我鉴定
2014/03/27 职场文书
2014年学校办公室工作总结
2014/12/19 职场文书
2015年幼儿园保育工作总结
2015/05/12 职场文书
关于国庆节的广播稿
2015/08/19 职场文书
一篇文章弄懂Python中的内建函数
2021/08/07 Python