首页 > 编程语言 >thinkphp 验证器

thinkphp 验证器

时间:2024-01-24 23:03:29浏览次数:25  
标签:username 验证 require rule thinkphp password email

方法一

验证器的使用 单独抽离成一个文件

declare (strict_types = 1);

namespace app\validate;

use think\Validate;

class ValidateAll extends Validate
{
    /**
     * 定义验证规则
     * 格式:'字段名' =>  ['规则1','规则2'...]
     *
     * @var array
     * require|max:25 验证规则, 可以多个, 用|隔开
     */
    protected $rule = [
        'username'  =>  'require|max:25|checkName:thinkphp',
        'password' =>  'require|min:6',
        'email' =>  'require|email',
        'price' =>  'float',
        'sum' =>  'number|between:1,100', // 数字, 1-100之间
    ];

    // 自定义规则
    protected function checkName($value, $rule, $data = [])
    {
        return $rule == $value ?  $rule. '是违禁词' : true;
    }

    /**
     * 定义错误信息
     * 格式:'字段名.规则名' =>  '错误信息'
     * 返回的错误信息提示, 如果不满足要求, 可以自定义错误信息
     * @var array
     */
    protected $message = [
        'username.require' => '用户名必须',
        'username.max'     => '用户名最多不能超过25个字符',
        'password.require' => '密码必须',
        'password.min'     => '密码最少不能少于6个字符',
        'email.require' => '邮箱必须',
        'email.email' => '邮箱格式错误',
    ];
}

使用的地方

namespace app\controller;

use app\BaseController;
use app\validate\ValidateAll;
use think\exception\ValidateException;


class Login extends  BaseController
{
    public function index()
    {
        // 全局的验证器
        try {
            validate(ValidateAll::class)->batch(true)->check([
                'username' => 'thinkphp',
                'password' => '122323',
                'email' => '[email protected]'
            ]);
        } catch (ValidateException $e) {
            // 验证失败 输出错误信息
            dump($e->getError());
        }

    }
}

方法二

直接在组件 类文件使用验证器规则

namespace app\controller;

use app\BaseController;
use think\Validate;


class Login extends  BaseController
{
    public function index()
    {
//        单独在组件使用验证器规则
//        $val = Validate::rule([
//            'username'  =>  'require|max:25|checkName:thinkphp',
//            'password' =>  'require|min:6',
//            'email' =>  'require|email',
//            'price' =>  'float',
//            'sum' =>  'number|between:1,100', // 数字, 1-100之间
//        ]);
//        $res = $val->batch(true)->check([
//            'username' => 'thinkphp',
//            'password' => '122323',
//            'email' => '[email protected]'
//        ]);
//        if (!$res) {
//            dump($val->getError());
//        }

//        或者 需要自定义验证方法

        $validate = new class extends Validate {
            protected function checkName($value, $rule, $data = [])
            {
                return $rule == $value ?  $rule. '是违禁词' : true;
            }
        };
        $validate->rule([
            'username'  =>  'require|max:25|checkName:thinkphp',
            'password' =>  'require|min:6',
            'email' =>  'require|email',
            'price' =>  'float',
            'sum' =>  'number|between:1,100', // 数字, 1-100之间
        ]);

        // 验证数据
        $data = [
            'username' => 'thinkphp',
            'password' => '122323',
            'email' => '[email protected]'
        ];

        // 执行验证
        $res = $validate->batch(true)->check($data);
        if (!$res) {
            dump($validate->getError());
        }
        echo $res;
    }

  }

标签:username,验证,require,rule,thinkphp,password,email
From: https://www.cnblogs.com/anans/p/17986045

相关文章

  • thinkphp 资源路由
    资源路由usethink\facade\Route;//资源路由thinkphp提供了一个命令方便开发者快速生成一个资源控制器//执行phpthinkmake:controllerBlogBlog是控制器类文件名字//标识index类型get路由blog//标识create类型get路由blog/create//标识save类型......
  • thinkphp 路由分组 url生成
    路由分组route/app.php//路由分组相同规则的路由方一起分组//Route::group('blog',function(){//Route::rule(':id','blog/index');//Route::rule('index','blog/login');//});//或者//Route::group(function(){/......
  • thinkphp 路由参数 域名 miss设置
    路由的使用在route/app.php文件里设置路由usethink\facade\Route;//rule()//还有其他的快捷方式Route::GETPOSTPUTDELETEPATCHHEADOPTIONSANY//Route::rule('index/:id','Login/index','GET|POST')->https();//Route::get('index/:......
  • 如何审核 Active Directory 中的 Kerberos 身份验证事件
    Kerberos取代了NTLANManager(NTLM)作为Windows操作系统的默认身份验证,是一种更快、更安全的替代方案。IT管理员可以启用对Kerberos身份验证的审核,从而允许记录在此过程中创建的事件。管理员可以监视这些事件,以密切关注登录到域的用户的失败和成功登录活动。任何突如其来的异......
  • thinkphp 关联模型 一对多关联 主副表查询
    一对多关联查询namespaceapp\model;usethink\Model;classUsersextendsModel{//模型中定义一对多关系的方法用于建立当前模型与另一个模型之间的关系,例如:当前数据表对应的外键表//profile自定义方法名Profile::class关联数据表的模型文件类名......
  • 手型机器人、灵巧手机器人:交互感知-行为提取-意图理解-技能生成-运动映射-灵巧操作”
    灵巧手机器人,灵巧精准操作的手型机器人,最有名的应该就是Google的Deepmind推出的可以玩魔方的手型机器人了,如下图:相关资料:https://baijiahao.baidu.com/s?id=1647601517185392390&wfr=spider&for=pchttps://m.thepaper.cn/baijiahao_4728005地址:http://www.ia.cas.cn/kygz......
  • SpringSecurity-手机号+短信验证码登陆
    与验证码登录逻辑是不一样的,所以不能使用SpringSecurity默认提供的那套逻辑;需要自个去写一个自定义身份认证逻辑短信验证码生成生成验证码短信验证码类ValidateCode是父类,ImageCode子类publicclassValidateCode{privateStringcode;/***过期时间......
  • JavaScript DOM表单相关操作之表单验证
    在大部分的情况下我们希望用户输入的数据是我们理想中的格式,尤其是在用户注册上,一些重要的信息我们是不允许用户乱写的,如手机号,邮箱等。接下来一起看几种表单验证的方式:1、验证长度验证长度是比较简单的,input标签元素的maxlength属性可以设置可输入的最大长度//用maxlength属......
  • R语言航班延误影响预测分析:lasso、决策树、朴素贝叶斯、QDA、LDA、缺失值处理、k折交
    全文链接:http://tecdat.cn/?p=32760原文出处:拓端数据部落公众号航班延误是航空公司、旅客和机场管理方面都面临的一个重要问题。航班延误不仅会给旅客带来不便,还会对航空公司和机场的运营产生负面影响。因此,对航班延误的影响因素进行预测分析,对于航空公司、旅客和机场管理方面都......
  • python随机生成图片验证码第二篇
    Python生成随机验证码,需要使用PIL模块.安装: pip3installpillow基本使用1.创建图片fromPILimportImageimg=Image.new(mode='RGB',size=(120,30),color=(255,255,255))#在图片查看器中打开#img.show()#保存在本地withopen('code.png','wb')asf......