thinkphp下制作用户永久登陆代码

有个项目需要用到用户永久登陆,使用了cookie来制作,现在把代码贴出来,仅作记录,水平有限,大牛勿笑,有更好写法请指教。
public function login(){
    	G('one');
    	$user = new \Think\Model\MongoModel("user");
    	$userinfo=$_SESSION['userinfo'];
    	if($userinfo){
    		echo $userinfo['username']."--session---登陆成功!<br/>";

    	}else{
    		$auth=$_COOKIE["auth"];
			if($auth){
			// echo $auth;
			$check_cc=explode(':', $auth);
			// dump($check_cc);
			$auths['ssid']=$check_cc[0];
			$auths['token']=$check_cc[1];
			$checkauto=$user->where($auths)->find();
			if($checkauto){
				session('userinfo',$checkauto);
				echo $checkauto['username']."--cookie--登陆成功!<br/>";			
			}

			}
    	}

		

    	if($_POST){    		
    		$username=I('post.username');
    		$pwd=I('post.pwd');
    		$where['username']=$username;
    		$where['pwd']=$pwd;
    		$checkuser=$user->where($where)->find();
    		// echo $user->getLastSql();
    		// dump($checkuser);
    		if($checkuser){
    			// 开始cookie365天保存
    			$sid=session_id();
    			$salt=rand(100000,999999);
    			$token=md5($salt.$username.$salt);

    			$cookiecontent=$sid.':'.$token;
    			setcookie('auth',$cookiecontent,time()+3600*24*365);
    			session('userinfo',$checkuser);

    			$dd['ssid']=$sid;
    			$dd['salt']=$salt;
    			$dd['token']=$token;
    			$bid=$user->where(array('_id'=>$checkuser['_id']))->save($dd);
    			if($bid){
    				echo "用户:".$checkuser['username'].'--直接--登陆成功!<br/>';
    			} 

    		}else{
    			echo "登陆失败<br/>";
    		}
    		echo "<a href='".U('login')."'>前往登陆</a><br/><br/>";
    	}
    	G('two');
    	echo G('one','two').'s';

    	$this->display();
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值