首頁  >  問答  >  主體

php - TP3.2 使用者登入的時效問題

用tp3.2做後台管理,在做用戶登入時遇到一個問題.
1.後台用戶登入之後,一直有效,放了一中午,關掉瀏覽器,用戶登入狀態一直存在,只有點擊登出時才能實現用戶的過期.
不是php的session有效期預設是1440秒(24分鐘),如果客戶端超過24分鐘沒有刷新,當前session會被回收,失效嗎,為啥一直都有效了?

2.用tp怎麼實現使用者登入的時效性問題:使用者不操作的時候,固定時間後自動時效.怎麼實現了.
我的登入部分的程式碼:

        if(IS_POST){
            $uname=I('post.uname');
            $password=md5(I('post.password'));
            $res=M('manager')->where("uname='{$uname}'")->find();
            if(is_null($res)) {
                $this->error("用户名不存在");
                return false;
            }
            if($res['uname']==$uname&&$res['password']==$password){
                $_SESSION['uname']=$res['uname'];
                $_SESSION['expire']=time()+600;
                $this->success('登录成功',U('Rbac/Index/index'));
                exit();
            }
            $this->error("登录失败");
        }

我百度看的思路是利用$_Session['expire']來實現,但是我不知道這段程式碼放在什麼位置合適,放在登入檢查時不合適吧,該放在什麼位置了?

        //        设置用户登录session登录限制时间
        if(isset($_SESSION['expire'])){
            if($_SESSION['expire']<time()){
                unset($_SESSION['expire']);
                $this->error('登录过期,请重新登录','Rbac/Login/login');
            }else{
//                刷新时间戳
                $_SESSION['expire']=time()+600;
            }
        }
天蓬老师天蓬老师2706 天前1170

全部回覆(1)我來回復

  • ringa_lee

    ringa_lee2017-06-15 09:24:30

    原理是:設定一個超時時長,如:600,登入時記錄好時間起點,每次頁面刷新,都要檢查是否超時(其實邏輯是:是否登入-是否超時-是否有權限),如果超時,則提示已「登入逾時請重新登入」並跳到登入頁,未逾時,表示使用者仍處於活動狀態,則重置計時起點$_SESSION['expire']=time() + 600

    回覆
    0
  • 取消回覆