第一:他会判断这是不是post提交的。为什么post提交。因为get的话,密码别人会看到是啥哈. 然后用户表里面这个用户是否存在。 如果不存在或者这个用户处于黑名单状态的话。
return alert('用户不存在,或者此用户未被审核通过','index',5,3);
如果这个用户点击登录的验证码校验不通过的话,代表输出的验证码不正确。
return alert('验证码不正确','index',5,3);
判断输入的密码与数据库中对应用户的密码是否一致。不一致的话。
return alert('密码不正确','index',5,3);
如果这全部都可以的话,保存用户数据到session中。
session('adminAccount', $adminData);
作用:因为有了这个保存的session。所以就能做到登录后才能操作后台功能。 提供什么思路呢? 加一个方法在login里面
public function initialize() {
//已登录直接跳转
$account = session('adminAccount');
if($account && $account['id']) {
return $this->redirect(url('index/index'));
}
}
这个方法就是初始化的时候也就是说第一执行的就是它,代表如果存在session。代表登录成功了index.html页面上。不存在的话,代表登录失败。返回到login.html页面上. 那什么情况下会存在session呢? 在登录成功的情况下,会赋值用户数据到session中的。所以就能判断啦
<?php
namespace app\dongadmin\controller;
use think\facade\Db;
class Login extends Base
{
public function initialize() {
//已登录直接跳转
$account = session('adminAccount');
if($account && $account['id']) {
return $this->redirect(url('index/index'));
}
}
//后台登录的逻辑
public function index()
{
if(request()->isPost()) {
$data = input('post.');
// 通过用户名 获取 用户相关信息
$adminData = Db::name('admin')->where('username',$data['username'])->find();//一维数组
if(!$adminData || $adminData['status'] !=1 ) {
return alert('用户不存在,或者此用户未被审核通过','index',5,3);
}
if(!captcha_check($data['verifycode'])) {
// 校验失败
return alert('验证码不正确','index',5,3);
}
if($adminData['password'] !=$this->password_salt($data['password'])) {
return alert('密码不正确','index',5,3);
}
session('adminAccount', $adminData);
return alert('登录成功!','index/index',6,3);
}else {
return view();
}
}
}