zeromemos
最好的学习方法就是输出所学的知识

05实现用户登入功能

编辑Login.php控制器,加入一个check方法用于验证用户登入。

我们先在数据库里创建一个用户账号,密码用md5加密后填写,md5加密可以直接百度加密。

登入功能中要用到下面这几个类

use think\Request; //用于接收前端的请求
use app\admin\model\User; //引入创建的一个用户模型后面会创建
use think\facade\Session; //加入session类 用于储存用户登入状态
use think\captcha\Captcha; //用于验证码的验证

编辑后Login.php控制器如下,主要看check方法

<?php

namespace app\admin\controller;
use think\Controller;
use think\Request;
use app\admin\model\User;
use think\facade\Session;
use think\captcha\Captcha;

class Login extends Controller
{
    //渲染登录页面
    public function index()
    {
        return $this->fetch('login');
    }

    //验证用户身份
    public function check(Request $request)
    {
        //设置status返回前端判断是否验证成功
        $status = 0;

        //获取表单提交的数据,并保存在变量中
        $data = $request -> param();
        $userName = $data['username'];
        $password = md5($data['password']);
        $validate = $data['validate'];
        $captcha = new Captcha();

        //在user表中进行查询:以用户为条件
        $map = ['username'=> $userName];
        $user = User::get($map);

        //将用户名与密码分开验证
        //如果没有查询到该用户
        if (!$captcha->check($validate)){

            //设置验证码不正确的提示信息
            $message = '验证码不正确';
        } elseif (is_null($user)) {

            //设置提示信息
            $message = '用户名不存在';
        } elseif ($user -> password != $password) {

            //设置密码不正确的提示信息
            $message = '密码不正确';
        } else {

            //如果用户名和密码都通过了验证,表明是合法用户
            //修改返回信息
            $status = 1;
            $message = '验证通过正在跳转';

            //将用户登录的信息保存到session中,供其它控制器进行登录判断
            Session::set('user_id', $userName);
            Session::set('user_info',$user->toArray());
        }

        //返回验证是否成功及提示信息
        return ['status'=> $status, 'message'=> $message];
    }
}

在controller同级目录下创建一个model文件夹,在里面创建User.php模型,用于查询数据库,也是在上面的控制器中被引用的模型


User.php模型代码如下,直接继承下thinkphp的默认模型类即可,暂时什么都不用填写:

<?php

namespace app\admin\model;
use think\Model;

class User extends Model
{
    
}

编辑前端中的代码,修改下底部的js代码,用于发送表单和接收后端返回的数据,修改后的js代码如下:

<script>
        $(function  () {
            layui.use('form', function(){
              var form = layui.form;
              // layer.msg('玩命卖萌中', function(){
              //   //关闭后的操作
              //   });
              //监听提交
              form.on('submit(login)', function(){
                // alert(888)
                  $.ajax({
                      type: 'POST',
                      url: "{:url('login/check')}",
                      data: $(".layui-form").serialize(),
                      dataType: "json",
                      success: function(data){
                          if (data.status == 1) {
                              layer.msg(data.message,function(){
                                  location.href='index.html'
                              });
                          } else {
                              layer.msg(data.message,refreshVerify());
                          }
                      }
                  })

                return false;
              });
            });
        })
    </script>

再提下Session存储路径是phpstudy_pro\Extensions\tmp\tmp下,内容图下图所示:


评论区

关于我们

本站主要用于记录个人学习笔记,网站开发中,如需以前站内资料请加QQ群272473835索取。注册账号仅提供回帖功能,可不注册!

微信公众号