1、管理员页面—页面传值
(1)创建一个Login控制器
D:\phpstudy_pro\WWW\yifeng>php think make:controller admin@Login --plain
image.png
(2)admin\view\login\login.html 创建目录和文件把x-admin中的的login.html过来,模版部分不用修改,修改js部分
image.png
(3)app\admin\controller\Login.php
<?php
declare (strict_types = 1);
namespace app\admin\controller;
use think\facade\Request;
class Login
{
//加载登录页面
public function login(){
return view();
}
//登录数据处理
public function dologin(Request $request){
halt($request::post());
}
}
(4)演示(表明传输到后台了,后台还没有做判断方法)
image.png
2、帐号密码规则验证及正确性验证
(1)验证器 app\admin\validate\Manager.php 中加入用户名和密码的验证
image.png
(2)控制器app\admin\controller\Login.php
<?php
declare (strict_types = 1);
namespace app\admin\controller;
use think\facade\Request;
use think\admin\model\Manager;
use app\admin\model\Manager;
use think\facade\Session;
class Login
{
//加载登录页面
public function login(){
return view();
}
//登录数据处理
public function dologin(Request $request){
$data = $request::post();
//返回模型中的处理结果,把post获取的$data传参给模型Model/manager.php中的checkLogin方法
$result = Manager::checkLogin($data);
return json($result);
}
}
(3)模型 app\admin\model\Manager.php
//处理登录验证
public static function checkLogin($data){
//数据的基础验证
try {
$result = validate(ManagerValidate::class)->scene('login')->check($data);
} catch (ValidateException $e) {
// 验证失败 输出错误信息
return return_msg(0,$e->getError());
}
//验证用户名和密码
$m = self::where('username',$data['username'])->find();
if(!$m){
return return_msg(0,'用户名不存在');
}
if(password_verify($data['password'],$m['password']) !== true)
return return_msg(0,'密码输入错误');
{
session('username',$data['username']);
session('userid',$m['id']);
return return_msg(1,'登录成功');
}
}
为了区分验证场景,密码修改的模型方法中,验证中加入场景判断
image.png
(5)效果
image.png