【thinkphp】之管理员登录
第一步:提交表单加{:token()}
用处:防止跨站脚本攻击
判断用户有没有通过这个表单提交,提交了,请求没有问题,如果不提交,请求有问题
第二步:验证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插件,美化弹窗
}
}
});
第三步:获取用户名和密码进行登录
控制器:
$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位盐
数据库:
html页面
控制器页面:
模型:
如果要存的信息多,可以这么存