Laravel博客系统开发--登录功能

登录功能

1.定义一条路由

Route::group(['prefix'=>'admin','namespace'=>'Admin'],function (){
    //登录
    Route::match(['get','post'],'/','Index@login');
});

2.创建控制器Index,模型Admin,以及视图login.blade.php的创建和前端模板的引入

登录功能
通过ajax异步提交form表单中的数据,将数据接收,再将数据传递给模型,最好验证再返回给控制器,由控制器传递给客户端。

Index控制器中login方法代码如下

//登录
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');
}

Admin模型中login方法代码如下

	 protected $fillable=['username','password','nickname','email'];
    protected $dateFormat='U';//设置时间类型为时间戳
    //登录
    public function login($data)
    {
    	//验证规则
        $rule=[
            'username'=>'bail|required',
            'password'=>'required',
        ];
        //错误提示信息
        $msg=[
            'username.required'=>'用户名不能为空',
            'password.required'=>'密码不能为空'
        ];
        //创建验证器
        $validator=Validator::make($data,$rule,$msg);
        if ($validator->fails()){
            return $validator->errors()->first();
        }
        //查询
        $result=$this->where($data)->first();
        if ($result){
        	//session记录信息
            $sessionData=[
                'username'=>$result['username'],
                'nickname'=>$result['nickname'],
                'email'=>$result['email'],
            ];
            session(['admin'=>$sessionData]);
            if ($result['status']!=1){
                return "此用户被禁用";
            }
            return 1;
        }else{
            return "用户名或密码错误";
        }
    }

HTML代码如下:引入layer插件,并且为登录按钮添加一个id为login

<form>
       <div class="loginbox-title">登录div>

       <div class="loginbox-or">
           <div class="or-line">div>
       div>
       <div class="loginbox-textbox">
           <input type="text" class="form-control" name="username" placeholder="用户名" />
       div>
       <div class="loginbox-textbox">
           <input type="password" class="form-control" name="password" placeholder="密码" />
       div>
       <div class="loginbox-forgot">
           <a href="{{url('admin/forget')}}">忘记密码?a>
       div>
       <div class="loginbox-submit">
           <input type="submit" id="login" class="btn btn-primary btn-block" value="登录">
       div>
       <div class="loginbox-signup">
           <a href="{{url('admin/register')}}">注册账户a>
       div>
form>

在这里插入图片描述

通过jquery的ajax异步提交数据到Index控制器中login方法

$(function () {
        $('#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;
        });
    });

效果图如下
Laravel博客系统开发--登录功能_第1张图片

你可能感兴趣的:(PHP,Laravel)