书接上文!
1、在demo模块书写路由
use think\facade\Route;
/*
* 登录
* */
Route::get('login','Login/create');
Route::post('loginadd','Login/save');
2、创建资源控制器 模块名@控制器名
php think make:controller demo@Login
3、创建模型 模块名@模型名
php think make:model demo@Logins
4、 在视图层 引入登录模板 视图 · ThinkPHP6.0完全开发手册 · 看云 引入视图命令
composer require topthink/think-view
将 css img js 引入到 public 目录下 static文件中
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>登录</title>
<link rel="stylesheet" href="/static/css/login.css">
<!-- 作者QQ:951252660 -->
</head>
<body>
<form action="loginadd" method="post" enctype="multipart/form-data">
<div class="login">
<div class="center">
<h1>Login</h1>
<div class="inputLi">
<strong>账户</strong>
<input type="text" placeholder="请输入" name="accout">
</div>
<div class="inputLi">
<strong>密码</strong>
<input type="text" placeholder="请输入" name="pwd">
</div>
<div class="inputLi">
<button>登录</button>
</div>
<p class="tip">关注17素材网</p>
</div>
</div>
</form>
</body>
</html>
6、Login 控制器中的 create 方法 展示登录页面
use think\facade\View;
public function create()
{
//展示登录页面
//error 书写错误信息
return View::fetch('login/login',['error'=>'']);
}
7、书写验证器 进行账号密码的验证
php think make:validate demo@Error
在验证器中
class Error extends Validate
{
/**
* 定义验证规则
* 格式:'字段名' => ['规则1','规则2'...]
*
* @var array
*/
protected $rule = [
'accout|账号'=>'require',
'pwd|密码'=>'require',
];
/**
* 定义错误信息
* 格式:'字段名.规则名' => '错误信息'
*
* @var array
*/
protected $message = [];
}
8、Login 控制器中的 save 中 添加方法
public function save(Request $request)
{
try {
//接值
$data=$request->all();
//验证
validate(Error::class)->batch(true)->check([
'username' => $data['username'],
'password' => $data['password'],
]);
//连接数据库
$obj = new \app\demo\model\User();
$res = $obj->loginUser($data);
if($res){
if($res['password']==$data['password']){
//登录日志 登录成功记录登录信息
Log::write('用户'.$data['username'].'在'.date('Y-m-d H:i:s'.'登录成功'));
return success(200,'登录成功','');
}else{
return fail(2001,'密码错误','');
}
}else{
return fail(2001,'账号错误','');
}
} catch (ValidateException $e) {
// 验证失败 输出错误信息
$error=$e->getError();
//返回错误信息
return fail(2001,$error,'');
}
}
9、对应模型层
public function loginUser($data){
return $this->where('username',$data['username'])->find();
}