有个项目需要用到用户永久登陆,使用了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();
}