不言不语

您现在的位置是: 首页 >  PHP  >  ThinkPHP

ThinkPHP

【thinkphp】之管理员登录

2020-05-23ThinkPHP
thinkphp管理员的登录

第一步:提交表单加{:token()}


099adcee5cb226e239843e1fd6de687.png


用处:防止跨站脚本攻击


判断用户有没有通过这个表单提交,提交了,请求没有问题,如果不提交,请求有问题



第二步:验证token,和验证码


$data=$request->only(['code','__token__']);//只获取验证码和token

        $validate=new Validate;//实例化验证类

        $rule= ['code|验证码'=>'captcha|token'];//验证规则

        if(!$validate->check($data,$rule)){//内置方法check,验证提交的验证码和token,取反


         return json(['status'=>'fail','msg'=>$validate->getError()]);//返回结果给json数据


        }


前端:


<script type="text/javascript">

$("#demoform").Validform({


tiptype:4, 

ajaxPost:true,


callback:function(res){


if(res.status=='fail'){//如果状态为失败,弹出框


layer.msg(res.msg,{icon:2});//引入layer插件,美化弹窗

}


}


});


da53404b050d90f55e4072dd4938bb7.png



第三步:获取用户名和密码进行登录


控制器:


      $username=$request->param('username','','trim');//获取用户名

       $password=$request->param('password','','trim');//获取密码


       $adminmodel= new AdminModel;

       $res=$adminmodel->checkAdmin($username,$password);//传到模型

if($res['status']=='success'){//判断登录成功,存登录状态

  session('username',$username);

}

        return json($res);//返回给前端



模型:


    public function  checkAdmin($username,$password){

        $user=$this->where('username',$username)->find();

if(!$user){

return ['status'=>'fail','msg'=>'用户名不存在'];


    }


    $pass=md5($password.$user['salt']);


    if($pass==$user['password']){

return ['status'=>'success','msg'=>'登录成功'];


    }else{

    return ['status'=>'fail','msg'=>'密码错误'];

    }

    }


返回给前端:



if(res.status=='success'){


layer.msg(res.msg,{icon:1});

location.href="{:url('/admin/index')}"

}else{


layer.msg(res.msg,{icon:2});


}



总结:密码是MD5+6位盐


数据库:


bb5b38380d1657bf38d5c81020edecc.png


html页面


660d9963d42cc860b5c060253ee061f.png


控制器页面:


ff4585f444c1f622206fd743ba42091.png


模型:


7c27f93898e5519feba83ad8e861e8e.png


如果要存的信息多,可以这么存


88.png

文章评论