php token 七天登录

 // web 登录
    public function doLogin()
    {
        if(request()->isAjax()){

            $userName = input('post.username');
            $password = input('post.password');
             $captcha = input("post.validcode");
            $seller = input('post.seller');

            $remember = input('post.remember');


            if(!captcha_check($captcha)){
                return json(['code' => -3, 'data' => '', 'msg' => '验证码错误']);
            }

            $keFu = new KeFu();
            $keFuInfo = $keFu->getKeFuInfo($userName, $seller);

            if(0 != $keFuInfo['code'] || empty($keFuInfo['data'])){
                return json(['code' => -1, 'data' => '', 'msg' => '客服不存在']);
            }

            if (0 == $keFuInfo['data']['kefu_status']) {
            	return json(['code' => -3, 'data' => '', 'msg' => '该客服已经被禁用']);
            }

            if(md5($password . config('service.salt')) != $keFuInfo['data']['kefu_password']){
                return json(['code' => -2, 'data' => '', 'msg' => '用户名密码错误']);
            }

            // 检测客服所属商户的有效期
            $seller = new Seller();
            $sellerInfo = $seller->getSellerInfo($keFuInfo['data']['seller_code']);

            if (empty($sellerInfo['data'])) {
                return json(['code' => -4, 'data' => '', 'msg' => '客服所属商户不存在']);
            }

            if (0 == $sellerInfo['data']['seller_status']) {
                return json(['code' => -5, 'data' => '', 'msg' => '商户尚未激活']);
            }

            if (date("Y-m-d H:i:s") > $sellerInfo['data']['valid_time']) {
                return json(['code' => -6, 'data' => '', 'msg' => '商户使用期已过']);
            }

            if($remember == "true"){

                $this->addServiceLogin($userName);
            }

            // 设置session标识状态
            session('kf_user_name', $keFuInfo['data']['kefu_name']);
            session('kf_user_id', $keFuInfo['data']['kefu_code']);
            session('kf_id', $keFuInfo['data']['kefu_id']);
            session('kf_user_avatar', $keFuInfo['data']['kefu_avatar']);
            session('kf_seller_id', $keFuInfo['data']['seller_id']);
            session('kf_seller_code', $keFuInfo['data']['seller_code']);

            return json(['code' => 0, 'data' => url('index/index', ['u' => $keFuInfo['data']['seller_code']]), 'msg' => '登录成功']);
        }

        $this->error('非法访问');
    }
    public function addServiceLogin($userName)
    {
        $config_salt = $this->random_str(16);
        $service_login = [
            'uname'=>$userName,
            'timeout'=>time()+120,
            'identifier'=>md5($config_salt . md5($userName . $config_salt)),
            'token'=>md5(uniqid(rand(), true))
        ];
        setCookie('auth',$service_login['identifier'].':'.$service_login['token'],$service_login['timeout'],'/');
        $service_login_timeout = new ServiceLoginTimeout($service_login);
        $res = $service_login_timeout->save();
        return $res;
    }
    public function random_str($length)
    {
        $arr = array_merge(range(0, 9), range('a', 'z'), range('A', 'Z'));
        $str = '';
        $arr_len = count($arr);
        for ($i = 0; $i < $length; $i++){
            $rand = mt_rand(0, $arr_len-1);
            $str.=$arr[$rand];
        }
        return $str;
    }

  个人中心:

 public function ucenter(){
        //判断是否永久登录
        if($_COOKIE['auth']){
        验证是否表中数据过期和正确
      }else{
$this->redirect(url('login/index', ['u' => $sellerCode]));
}

        $this->assign("session",$_SESSION);
        $this->display("ucenter");
    }

退出:
public function loginout(){
        session(null);
        setcookie('auth', '', time()-1);
        $this->redirect("Test/login");
    }
posted @ 2022-11-08 11:03  星云惊蛰  阅读(30)  评论(0)    收藏  举报