【TP5.1】验证码校验 ---验证器使用

简介: 【TP5.1】验证码校验 ---验证器使用

实现步骤:


在data创建一个Uservaildate的验证类


写验证规则


在登录时对验证类的调用,然后校验


$userVaildata->check(Request::param())这个方法是获取用户输入的信息

$userVaildata->getError()这个方法是返回验证错误信息



首先创建验证器类

image.png

源码:

<?php
namespace data\validate;
use think\Validate;
/**
 * 对用户输入登录数据进行验证
 */
class UserValidate extends Validate
{
    /**
     * 定义验证规则
     * 格式:'字段名' =>  ['规则1','规则2'...]
     *
     * @var array
     */ 
  protected $rule = [
      'vertify' => 'require|captcha'
    ];
    /**
     * 定义错误信息
     * 格式:'字段名.规则名' =>  '错误信息'
     *
     * @var array
     */ 
    protected $message = [
        'vertify' => [
            'require' => '验证码必须有',
            'captcha' =>'验证码错误'
        ]
    ];
}

屏幕快照 2022-05-12 上午10.28.26.png

<?php
namespace app\admin\controller;
use think\Controller;
use data\model\user\User;
use data\service\UserService;
use Request;
use Db,Log;
use think\captcha\Captcha;
use data\Validate\UserValidate;
class Login extends Controller
{   
    // 定义逻辑层UserService
    private $userService;
    /**
     * 初始化
     */
    public function initialize()
    {
        $this->userService = new UserService;
    }
    /**
     * 登录
     * @return \think\Response
     */
    public function login()
    {
        if(Request::isPost()){
            $username = Request::param('username');
            $password = Request::param('password');
            $userVaildata = new UserValidate;
            // 对验证类进行验证
            if(!$userVaildata->check(Request::param())){
                return json([
                    'code' => USER_LOGIN_VALIDATE_ERROR,
                    //$userVaildata->getError()可以获取到具体的错误信息
                    'msg' => $userVaildata->getError()
                ]);
            }
            return ajaxRuturn($this->userService->login($username,$password));
        }
        return $this->fetch();
    }
    /**
     * 验证码验证
     */
    public function verify()
    {
        $config =    [
            // 验证码字体大小
            'fontSize'    =>    30,
            // 验证码位数
            'length'      =>    3,
            // 关闭验证码杂点
            'useNoise'    =>    false,
        ];
        $captcha = new Captcha($config);
        return $captcha->entry();
    }
}
相关文章
|
4月前
|
JavaScript NoSQL Redis
Vue中实现修改邮箱、手机号等流程的大致过程、验证码由后端的redis生成验证(版本1.0)
这篇文章记录了在Vue中实现修改手机号和邮箱的大致流程,包括使用过滤器部分隐藏展示的手机号和邮箱,以及通过点击触发路由跳转的便捷方式。文章还描述了旧号码和新号码验证的界面实现,其中验证码由后端生成并通过弹窗展示给用户,未来可以接入真正的手机验证码接口。此外,还提供了修改邮箱的页面效果截图,并强调了学习是一个永无止境的过程。
Vue中实现修改邮箱、手机号等流程的大致过程、验证码由后端的redis生成验证(版本1.0)
|
2月前
jcaptcha集群时验证码不能验证的问题
jcaptcha集群时验证码不能验证的问题
37 3
|
2月前
|
C#
C# 图形验证码实现登录校验代码
C# 图形验证码实现登录校验代码
105 2
|
2月前
|
存储 前端开发 Java
验证码案例 —— Kaptcha 插件介绍 后端生成验证码,前端展示并进行session验证(带完整前后端源码)
本文介绍了使用Kaptcha插件在SpringBoot项目中实现验证码的生成和验证,包括后端生成验证码、前端展示以及通过session进行验证码校验的完整前后端代码和配置过程。
314 0
验证码案例 —— Kaptcha 插件介绍 后端生成验证码,前端展示并进行session验证(带完整前后端源码)
|
3月前
|
前端开发 PHP
ThinkPHP 验证码扩展库的使用,以及多应用模式下,如何自定义验证码校验规则
本文介绍了在ThinkPHP框架中使用验证码扩展库的方法,包括安装验证码扩展库、在页面中使用验证码、自定义验证码配置以及校验验证码的步骤和代码示例。
ThinkPHP 验证码扩展库的使用,以及多应用模式下,如何自定义验证码校验规则
|
7月前
|
JavaScript Java
java生成验证码并进行验证
java生成验证码并进行验证
|
4月前
|
存储 NoSQL Java
使用redis进行手机验证码的验证、每天只能发送三次验证码 (redis安装在虚拟机linux系统中)
该博客文章展示了如何在Linux虚拟机上使用Redis和Jedis客户端实现手机验证码的验证功能,包括验证码的生成、存储、验证以及限制每天发送次数的逻辑,并提供了测试结果截图。
使用redis进行手机验证码的验证、每天只能发送三次验证码 (redis安装在虚拟机linux系统中)
|
4月前
|
NoSQL Java Redis
认证服务---整合短信验证码,验证码倒计时,验证码防刷校验 【一】
这篇文章介绍了如何在分布式微服务项目中整合短信验证码服务,包括使用阿里云短信验证接口、将短信验证功能集成到第三方服务中、其他服务的远程调用,以及通过Redis实现验证码防刷机制的代码实现和遇到的问题解决方案。
|
6月前
|
缓存 NoSQL Java
案例 采用Springboot默认的缓存方案Simple在三层架构中完成一个手机验证码生成校验的程序
案例 采用Springboot默认的缓存方案Simple在三层架构中完成一个手机验证码生成校验的程序
124 5
|
6月前
|
前端开发 JavaScript
阿里云验证码2.0 验证时报错 前端页面获取的验证参数有问题,动态JS加载失败,请问怎么解决啊?急,急,急。
用户反馈校验时遇到错误,日志显示验证码参数获取异常。采用无痕验证,失败后,返回`{captchaResult:false,bizResult:false}`,未触发滑块二次验证。