thinkphp6---规则验证
再用Thinkphp开发框架做项目的时候,数据安全的校验非常重要,下面整理了一下Thinkphp自带的验证规则及方式:
一、基础数据校验示例
<?php namespace app\validate; use think\Validate; class User extends Validate { protected $rule = [ 'name' => 'require|max:25', 'age' => 'number|between:1,120', 'email' => 'email', ]; protected $message = [ 'name.require' => '名称必须', 'name.max' => '名称最多不能超过25个字符', 'age.number' => '年龄必须是数字', 'age.between' => '年龄只能在1-120之间', 'email' => '邮箱格式错误', ]; }
二、自定义验证规则校验
class User extends Validate { protected $rule = [ 'name' => 'checkName:thinkphp', 'email' => 'email', ]; protected $message = [ 'name' => '用户名必须', 'email' => '邮箱格式错误', ]; // 自定义验证规则 protected function checkName($value, $rule, $data=[]) { return $rule == $value ? true : '名称错误'; } }
三、验证规则的写法
protected $rule = [ 'name' => 'require|max:25', 'age' => 'number|between:1,120', 'email' => 'email' ];
或者是这样:
protected $rule = [ 'name' => ['require', 'max' => 25, 'regex' => '/^[\w|\d]\w+/'], 'age' => ['number', 'between' => '1,120'], 'email' => 'email', ];
四、内置验证规则
1、必须
'name'=>'require' // 必填
2、数字
'num'=>'number' // 不包含负数和小数点 'num'=>'integer' // 整数 'num'=>'float' // 浮点数字
3、Bool值
'num'=>'boolean'
4、邮箱
'email'=>'email'
5、数组
'info'=>'array'
6、日期
'date'=>'date'
7、纯字母
'name'=>'alpha' // 純字母
8、字母和数字
'name'=>'alphaNum' // 字母和数字
9、字母、数字、下划线、破折号
'name'=>'alphaDash' // 字母和数字,下划线_及破折号-
10、只能是汉字
'name'=>'chs' // 必须是汉字
11、汉字和字母
'name'=>'chsAlpha'
12、汉字、字母和数字
'name'=>'chsAlphaNum'
13、汉字、字母、数字、下划线、破折号
'name'=>'chsDash'
14、小写
'name'=>'lower' // 只能是小写
15、大写
'name'=>'upper' // 只能是大写
16、URL
'url'=>'url'
17、IP
'ip'=>'ip'
18、手机号
'mobile'=>'mobile'
19、身份证号
'id_card'=>'idCard'
20、长度和区间
'num'=>'in:1,2,3' // 验证某个字段的值是否在某个范围 'num'=>'notIn:1,2,3' // 验证某个字段的值不在某个范围 'num'=>'between:1,10' // 验证某个字段的值是否在某个区间 'num'=>'notBetween:1,10' // 验证某个字段的值不在某个范围 'name'=>'length:4,25' // 验证某个字段的值的长度是否在某个范围 'name'=>'length:4' // 指定长度 'name'=>'max:25' // 最大长度 'name'=>'min:5' // 最小长度
21、验证重复密码
'repassword'=>'require|confirm:password' // 验证某个字段是否和另外一个字段的值一致
22、验证一致
'name'=>'require|different:account' // 验证某个字段是否和另外一个字段的值不一致
23、数值验证
// 验证是否等于某个值 'score'=>'eq:100' 'num'=>'=:100' 'num'=>'same:100' // 验证是否大于等于某个值 'score'=>'egt:60' 'num'=>'>=:100' // 验证是否大于某个值 'score'=>'gt:60' 'num'=>'>:100' // 验证是否小于等于某个值 'score'=>'elt:100' 'num'=>'<=:100' // 验证是否小于某个值 'score'=>'lt:100' 'num'=>'<:100' // 字段比较 'price'=>'lt:market_price' 'price'=>'<:market_price'
24、正则验证
// 直接使用正则 'zip'=>'\d{6}', // 或者 'zip'=>'regex:\d{6}', 'accepted'=>['regex'=>'/^(yes|on|1)$/i'], // 也可以这样 'zip' => 'regex:zip',
25、唯一验证 常用于:字段唯一校验
'name' => 'unique:user', // 表示验证name字段的值是否在user表(不包含前缀)中唯一 'name' => 'unique:user,account', // 验证其他字段 'name' => 'unique:user,account,10', // 排除某个主键值 'name' => 'unique:user,account,10,user_id', // 指定某个主键值排除
复杂唯一校验
'name' => 'unique:user,status^account', // 多个字段验证唯一验证条件 'name' => 'unique:user,status=1&account='.$data['account'], // 复杂验证条件
以上列举常见的25种校验,更多使用规则见官方文档:
https://www.kancloud.cn/manual/thinkphp6_0/1037629
打完收工!

浙公网安备 33010602011771号