博客开发之登录功能
1.新建一个控制器为Index,模型为Admin(对应表名应该为复数admins),视图的新建,以及后台HTMl模板的引入
登录功能
通过AJAX异步提交form表单中的数据,将数据接收,再将数据传递给模型,最好验证再返回给控制器,由控制器传递给客户端。
控制器代码如下
//登录
public function login()
{
if (request()->isMethod('post')){
$data = request()->only(['username','password']);
$result = (new Admin())->login($data);
if ($result == 1){
$msg = [
'code' => 1,
'msg' => '登陆成功',
'url' => url('admin/index'),
];
}else{
$msg = [
'code' => 0,
'msg' => $result,
];
}
return $msg;
}
return view('admin.index.login');
}
模型代码如下
//登录
public function login($data)
{
$rule = [
'username' => 'bail|required', //bail首次验证失败后不继续执行
'password' => 'required',
];
$msg = [
'username.required' => '用户名不能为空',
'password.required' => '密码不能为空',
];
$validate = Validator::make($data,$rule,$msg);
if ($validate->fails()){
return $validate->errors()->first();
}
$result = $this->where($data)->first();
if ($result){
$sessionData = [
'id' => $result['id'],
'nickname' => $result['nickname'],
'email' => $result['email'],
'is_super' => $result['is_super'],
];
session(['admin'=>$sessionData]);
if ($result['status'] != 0){
return '该用户已被禁用';
}
return 1;
}else{
return '用户名或者密码错误';
}
}
HTML代码如下:引入layer插件,并且为登录按钮添加一个id为login
通过AJAX异步提交数据到控制器
$('#login').click(function () {
$.ajax({
url:"{
{url('admin')}}",
type:'post',
data:$('form').serialize(),
dataType:'json',
success:function (data) {
if(data.code == 1){
layer.msg(data.msg,{
icon: 6,
time: 2000,
},function () {
location.href = data.url;
});
}else{
layer.open({
title:'登录失败',
content:data.msg,
icon:5,
anim:6,
});
}
}
});
return false;
});