在WordPress主题开发过程中、涉及到处理用户提交内容的时候,为确保安全和数据的正确性,在吧数据保存到数据库之前、一定要对用户提交的内容进行验证,这些验证包括必填项、数据格式等验证,即使我们已经通过 JavaScript 在前端验证过这些数据了。今天为大家介绍的是 PHP 语言中最流行的后端数据验证库 Valitron。Valitron 是一个简单、小巧、优雅的 PHP 独立验证库、不依赖任何其他库,该库使用简单之间的验证方法对用户提交的数据进行验证。Valitron 的使用方法也非常简单命令,下面我们来详细了解一下这个库。
安装 Valitrion 验证库
和其他流行的 PHP 库一样,我们可以直接通过 Composer 安装和升级 Valitron 验证库。
php composer.phar require vlucas/valitron
使用 Valitrion 验证库进行数据验证
我们可以使用 Valitron 验证指定的数据,如下示例,我们在实例化 Validator 类的时候,给 Validator 类传入一个数组,该数组就是我们需要验证的数据。然后通过 $v->rule('required', 'name');
添加验证规则,如果验证失败,我们可以通过$v->errors()
方法得到验证失败的消息。
$v = new Valitron\Validator( array('name' => '来呀,来验证我呀,肯定会通过验证的。') );
$v->rule('required', 'name');
if($v->validate()) {
echo "早告诉你了,肯定会验证通过的。";
} else {
// 打印错误
print_r($v->errors());
}
通过下面示例中的方法,我们可以直接验证表单提交的 $_POST 数据,对于相同的的验证规则、我们甚至可以把这些数据直接放到一个数组里面。如下示例中、在第一行中:我们直接把 PHP 超级变量 $_POST 传给了验证类;然后在第二行中:然后设置了第一个验证规则,来验证 name 和 email 为必填项;然后在第三行中:添加了验证 email 必须为电子邮件地址的验证规则。在这些验证规则中,’name’ 和 ’email’ 为表单字段的 name 属性。
$v = new Valitron\Validator($_POST);
$v->rule('required', ['name', 'email']);
$v->rule('email', 'email');
if($v->validate()) {
echo "验证通过不通过,要看用户是否填写了姓名和电子邮件。";
} else {
// 打印错误
print_r($v->errors());
}
内置验证规则
Valitron 内置了丰富全面的验证规则,基本上能符合我们开发 WordPress 应用的需求,看完一下的验证规则,你会觉得Valitron管的太宽了。如果下面的验证规则不符合要求,我们还可以自定义验证规则。
- required – 必须字段
- equals – 相等字段、一个字段必须和另外一个字段的值相等(经常用于密码验证)
- different – 一个字段的值必须和另外一个字段的不同
- accepted – 选择框或单选框必须被选中(常用于接受使用条款)
- numeric – 必须是数字
- integer – 必须是证书
- array – 必须是数组(可以用来验证多选项)
- length – 字符数必须是指定值(比如验证手机号码必须是11位的)
- lengthBetween – 自负数必须介于指定的两个数字之间
- lengthMin – 最小字符数
- lengthMax – 最大自负数
- min – 数字最小不能小于指定值
- max – 数字最大不能大于指定值
- in – 必须是指定数组中的一项
- notIn – 必须不是指定数组中的一项
- ip – 必须是正确的IP 地址
- email – 必须是正确的电子邮件地址
- url – 必须是正确的 URL 地址
- urlActive – 必须是可以访问的 URL 地址(可以用来验证用户提交的网址是否可以访问)
- alpha – 必须是英文字符
- alphaNum – 必须是英文或数字
- slug – 必须是 URL 别名字符串 (a-z, 0-9, -, _)
- regex – 必须符合置顶的正则表达式(可以用来实现各种各样的自定义验证、比如身份证、手机号等验证)
- date – 必须是正确的日期
- dateFormat – 日期必须符合我们指定的格式
- dateBefore -必须是正确的日期并早于我们指定的日期
- dateAfter -必须是正确的日期并晚于我们指定的日期
- contains – 必须包含指定字符串
- creditCard – 必须是正确的信用卡号
- instanceOf – 必须包含指定 PHP 类的实例
- optional – 字段不一定要包含在验证数组中、如果有该字段、该字段的值必须通过验证规则
注意:如果我们需要验证浮点数的最大/最小值,我们需要安装 PHP BCMath(高精度数学运算)扩展来保证更好的准确性,建议安装此扩展,Valitron 将会在检测到该扩展可用时使用此扩展。
自定义验证失败的消息
如果该库提供的默认失败提示消息看起来不是那么符合要求,我们可以设置一个自定义消息目录,然后把验证字段内容放入到该目录中即可。验证消息的具体内容参考该库官方的验证消息内容。
use Valitron\Validator as V;
V::langDir(__DIR__.'/validator_lang');
V::lang('zh-cn');
使用 Valitron 可以让我们的验证方便不少,验证方便了,我们就不太可能偷懒去忽略验证用户提交的数据。数据正确了,我们开发的应用程序的 Bug 就会少很多,程序的稳定性和安全性也会有相应的提高。如果你在使用 Valitron 进行数据验证的时候遇到了问题,欢迎在评论中提出交流。