ThinkPHP5_验证码登陆的实现

显示验证码

1.需要在config.php配置

    //验证码配置
    'captcha' => [
        // 验证码位数
        'length' => 4,
        // 是否画混淆曲线
        'useCurve' => false,
    ]

 2.在login.html中写上 

{:captcha_src()}显示验证码
this.src='{:captcha_src()}?' + Math.random()随机验证码路径
<img class="pull-right" src="{:captcha_src()}" onclick="this.src='{:captcha_src()}?' + Math.random()" />

controller控制器的代码

/**
     * 登陆方法
     */
    public function login(){
        //接收页面传过来的数据
        $data = $this->request->param();

        //定义验证规则
        $rult = [
            'username' => 'require|max:20|min:6',
            'password' => 'require|max:20|min:6|alphaDash',
            'code' => 'require'
        ];

        //定义提示信息
        $msg = [
            'username.require' => '用户名不能为空',
            'username.max' => '用户名不能超过20位',
            'username.min' => '用户名不能小于6位',
            'password.alphaDash' => '用户名必须是字母、数字或_组成',
            'password.require' => '密码不能为空',
            'password.max' => '密码必须小于20位',
            'password.min' => '密码必须大于6位',
            'code.require'         => '验证码不能为空'
        ];

        //获取登陆的 用户名和密码
        $data2 = ['username' => $data['username'] , 'password' => $data['password']];

        //检验验证码是否正确
        if(!captcha_check($data['code'])){
            //验证失败
            return $this->error("验证码错误");
        };

        //验证账号密码是否符合要求
        $result = new Validate($rult,$msg);
        if(!$result->check($data)){
            return $this->error($result->getError());
        }
        //查询账号密码 是否存在
        $rel = user::get($data2);
        if($rel != null){
            //存储用户信息
            session("user",$rel);
            return $this->success('登陆成功!',"admin/index/index");
        }


        return $this->error("登陆失败!");

    }

猜你喜欢

转载自blog.csdn.net/weixin_42137574/article/details/105099075
今日推荐