>백엔드 개발 >PHP 튜토리얼 >PHP의 로그인 시간 초과 감지 기능 예제에 대한 자세한 설명

PHP의 로그인 시간 초과 감지 기능 예제에 대한 자세한 설명

墨辰丷
墨辰丷원래의
2018-05-24 16:41:011896검색

이 글은 주로 php 로그인 시간 초과 감지 기능 예시에 대한 자세한 설명을 소개하고 있습니다. 필요한 친구들은 참고하시면 됩니다.

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(&#39;ADMIN_ID&#39;,$result["id"]);//cookie缓存
   cookie(&#39;LOGIN_TIME&#39;,Request::instance()->time()+3600);//记录登录时间,并缓存1小时

 }
 return view();
 }
 
 // 检测是否登录超时(js调用,url为:http://您的域名/manage/main/loginLosetime)
 public function loginLosetime(){
 $logintime = cookie(&#39;LOGIN_TIME&#39;);
 $time = request()->time();
 if($time > $logintime){
 return json([&#39;code&#39;=>1,&#39;msg&#39;=>&#39;登录超时!&#39;,&#39;url&#39;=>url(&#39;main/login&#39;)]);
 }else{
 return json([&#39;code&#39;=>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(&#39;ADMIN_ID&#39;);
 if(!empty($cookie_admin_id)){
 //获取登录用户信息
   .......
 }else{
 if($this->request->isAjax()){
 return $this->error(&#39;您还没有登录!&#39;,url(&#39;main/login&#39;));
 }else{
 header("Location:".url("main/login"));
 exit();
 }
 }
 }
 // 页面操作记录
 protected function doAction(){
 $logintime = cookie(&#39;LOGIN_TIME&#39;);//获取缓存登录超时时间
 $time = request()->time();//当前时间
  //判断当前时间是否大于缓存时间 或者 超时时间小于60秒后,自动多加1个小时时间
 if($time > $logintime || ($time - $logintime) < 60){
 $newLogintime = $logintime + 3600;
 cookie(&#39;LOGIN_TIME&#39;,$newLogintime);
 }
 }
}

3. js 파일

$.ajaxSetup({
 cache: false
});
$(function(){
 setInterval(function() {
 loginLosetime()
 }, 360000);//设置1小时自动执行 loginLosetime 函数(时间可自行调整)
});
// 登录超时检测
function loginLosetime(){
 $.get(AJAX_URL+&#39;main/loginLosetime&#39;,function(res){
 if(res.code == 1){
 window.location.href = res.url;
 }
 });
}

마지막으로 모든 페이지에서 어필 js 파일을 호출하면 됩니다.

위 내용은 이 글의 전체 내용입니다. 모든 분들의 공부에 도움이 되었으면 좋겠습니다.


관련 권장 사항:

PHP에서 임의로 생성된 워터마크 이미지 함수 구현 방법

Ajax 기반 MVC에서 파일 업로드 함수

구현 루프를 구현하는 HTML5 페이팔 공제(구독)functionmethod

위 내용은 PHP의 로그인 시간 초과 감지 기능 예제에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.