php中登入逾時檢測功能執行個體詳解

來源:互聯網
上載者:User
這篇文章主要介紹了php登入逾時檢測功能執行個體詳解的相關資料,需要的朋友可以參考下

php登入逾時檢測功能執行個體詳解

前言:

php登入逾時問題,當使用者超過一定時間沒有操作頁面時自動結束登入,原理是通過js進行訪問判斷的!代碼如下(以thinkphp5.0版本為例)

1、建立登入版塊控制器:

<?phpnamespace 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、建立公用控制器(所有需要驗證登入的控制器都繼承該控制器)

<?phpnamespace 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檔案即可,登入頁面可不用調用!

以上就是本文的全部內容,希望對大家的學習有所協助。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.