simon-ugorji / octavalidate-php
这是一个功能丰富的表单验证库,可以帮助您在服务器端使用复杂的正则表达式、PHP 内置验证和验证规则来验证表单。
Requires
- php: >=5.6.40
README
这是一个功能丰富的库,可以帮助您在服务器端使用复杂的正则表达式、PHP 内置验证和验证规则来验证表单。
我们包含了一个示例文件夹,其中包含一些已应用验证规则的表单。在您的本地服务器上打开任意文件并提交表单。
此库还可以帮助使用 JavaScript 验证您的前端表单。访问仓库
其他版本
Octavalidate - JS
使用此库的 JavaScript 版本来验证您的前端(HTML)表单。
Octavalidate - NodeJS
使用此库的 NodeJS 版本来在服务器端验证表单。
文档
访问文档以了解有关此优秀的库的更多信息,并在那里尝试表单!
安装
COMPOSER
$ composer require simon-ugorji/octavalidate-php
本地
- 下载最新版本并将其导入到您的项目中。
- 在您的项目中,使用 require 关键字并包含文件 Validate.php
- 现在使用
use
关键字将类链接到您的项目,并通过传递表单 id 作为 第一个参数 以及任何配置作为 第二个参数 来创建类的实例。
require 'src/Validate.php'; use Validate\octaValidate; $myForm = new octaValidate('FORM_ID', 'CONFIG_OPTIONS');
如何使用
- 为表单输入定义验证规则
- 调用
validateFields()
方法,并将验证规则作为第一个参数传递,然后将要验证的字段作为第二个参数传递。如果没有提供字段,则默认为$_POST
数组。
//require the library require 'src/Validate.php'; use Validate\octaValidate; //create new instance $myForm = new octaValidate('FORM_ID', 'CONFIG_OPTIONS'); //syntax for defining validation rules $valRules = array( "FORM_INPUT_NAME" => array( ["RULE_TITLE", "CUSTOM_ERROR_MESSAGE"] ) ); /* If you don't provide a custom error message, the script will use the default one available */ //define rules for each form input name $valRules = array( "uname" => array( ["R", "Your username is required"] ), "email" => array( ["R", "Your Email Address is required"], ["EMAIL", "Your Email Address is invalid!"] ) ); //begin validation on $_POST fields if ($myForm->validateFields($valRules, $_POST) === true){ //process form data here }else{ //return errors print_r(json_encode($myForm->getErrors())); }
关于验证字段方法
validateFields
方法接受两个参数;
-
第一个参数是验证规则数组
-
第二个参数是要验证的字段数组。
- 这是表单字段来源的地方,可以是
$_POST
或$_GET
数组。如果没有提供值,则默认为$_POST
数组。
//validate $_POST fields $myForm->validateFields($valRules, $_POST); //validate $_GET fields $myForm->validateFields($valRules, $_GET);
- 这是表单字段来源的地方,可以是
此方法返回一个 boolean
。
true
表示没有验证错误false
表示存在验证错误
validateFields
方法不验证上传的文件!请继续阅读以了解如何验证上传的文件。
验证规则
以下是一些内置的验证规则。
- R - 必须有值。
- ALPHA_ONLY - 值必须仅包含字母!(小写或大写)。
- LOWER_ALPHA - 值必须仅包含小写字母。
- UPPER_ALPHA - 值必须仅包含大写字母。
- ALPHA_SPACES - 值必须包含字母或空格!
- ALPHA_NUMERIC - 值必须包含字母和数字。
- DATE_MDY - 值必须是一个有效的日期,格式为 mm/dd/yyyy。
- DIGITS - 值必须是有效的数字或数字。
- PWD - 值必须至少包含一个数字和一个大写字母,一个小写字母,并且至少 8 个或更多字符。
- EMAIL - 值必须是一个有效的电子邮件地址。
- URL - 值必须是一个有效的URL
- URL_QP - 值必须是一个有效的URL,并且可以包含查询参数。
- USERNAME - 值可以包含字母、数字、连字符或下划线。
- TEXT - 值可以包含以下特殊字符(. , / () [] & ! '' "" : ; ?)
没有看到你表单需要的验证规则?不用担心!
使用这个库,你可以定义自己的自定义规则,它将被像内置规则一样处理。
自定义验证规则
定义自定义规则的语法
$myForm->customRule($RULE_TITLE, $REG_EXP, $ERROR_TEXT);
这是一个用于验证密码的自定义规则。
//require the library require 'src/Validate.php'; use Validate\octaValidate; //create new instance $myForm = new octaValidate('my_form'); //custom password validation $rule_title = 'PASS'; $reg_exp = '/12345/'; $err_txt = "Please enter 12345"; //build the rule $myForm->customRule($rule_title, $reg_exp, $err_txt); //provide the rule title when defining validation rules $valRules = array( "password" => array( ["PASS"] ) );
更多自定义规则
如果你想定义更多验证规则怎么办?
你所要做的就是创建一个数组,该数组将包含规则标题作为数组的属性,其值是另一个数组,包含规则的正则表达式和错误文本,由逗号分隔。
这是语法
$RULES = array( "RULE_TITLE" => ['REG_EXP', 'CUSTOM_ERROR_MESSAGE'] ); $myForm->moreCustomRules($RULES);
这是一个自定义的用户名和密码验证规则
//require the library require 'src/Validate.php'; use Validate\octaValidate; $myForm = new octaValidate('my_form'); //custom username & password validation $rules = array( "PASS" => ['/12345/', "Please enter 12345"], "UNAME" => ['/simon/', "Please enter simon"] ); //build the rule $myForm->moreCustomRules($rules); //provide the rule title when defining validation $valRules = array( "username" => array( ["UNAME"] ), "password" => array( ["PASS"] ) );
注意:所有规则标题都是区分大小写的!
属性验证
目前我们有4种类型的属性验证
- 长度验证
- 等于验证
- 大小验证
- 文件验证
所有属性验证都遵循以下语法
//syntax $valRules = array( "FORM_INPUT_NAME" => array( ["ATTRIBUTE_TITLE", "VALUE", "CUSTOM_ERROR_MESSAGE"] ) );
长度验证规则
你可以使用这个验证来检查用户提供的字符数量。
- maxlength (5) - 这意味着值必须是5个字符或更少。
- minlength (5) - 这意味着值必须是5个字符或更多。
- length (5) - 这意味着值必须是5个字符。
例如;
//sample validation $valRules = array( "username" => array( ["R", "Your username is required"], ["MINLENGTH", "5", "Your username must contain 5 characters or more"] ), "age" => array( ["R", "Your age is required"], ["LENGTH", "2", "Your Age must contain 2 digits!"] ) );
等于验证规则
你可以使用规则 EQUALTO 检查两个输入是否包含相同的值。这个验证规则的值必须是你要检查的另一个 输入名称。
//sample validation $valRules = array( "password" => array( ["R", "Your password is required"], ["EQUALTO", "confirm_password", "Both passwords do not match"] ) );
文件验证规则
在文件验证中,我们有如下规则;
- ACCEPT - 使用这个规则列出允许上传的文件扩展名。例如。png, .jpeg。
- ACCEPT-MIME - 使用这个规则列出允许上传的文件MIME类型。它支持通配符。例如 audio/*, image/*, image/jpeg, image/png。
建议使用
ACCEPT-MIME
规则来验证文件类型
- SIZE - 这个规则确保提供的文件大小必须等于指定的值。
- MINSIZE - 这个规则确保提供的文件大小必须等于或超过指定的值。
- MAXSIZE - 这个规则确保提供的文件大小必须等于或小于指定的值。
- 其他包括;FILES, MINFILES, 和 MAXFILES
注意: size, minsize & maxsize 对单文件或多文件上传都适用。
例如;
//sample validation $formRules = array( //single file upload "file" => array( ["R"], ["ACCEPT", ".mp3, .ogg"], ["MAXSIZE", "5mb"] ), //multiple files upload "files" => array( ["R"], ["ACCEPT-MIME", "image/*"], ["MAXFILES", "5"], ["MAXSIZE", "50mb"] ) );
请参阅文档了解有关文件验证的更多信息。
API方法
配置
我们有3个配置选项
-
stripTags:
Boolean
就像PHP内置的
stripTags
函数一样,这个选项遍历POST数组并删除任何在标签内的内容。默认值是false
。 -
strictMode:
Boolean
这个选项从表单输入的开始和结束处删除额外的空白,并防止用户将保留关键字作为值提供。默认值是
false
。 -
strictWords:
Array
这个选项允许你提供用户不应提交的单词。例如 ["null", "error", "false"]。为了使用此选项,你必须将
strictMode
设置为true
。
要使用这些选项中的任何一个,请将其作为数组提供,并在创建 octaValidate 实例时将其作为第二个参数传递。
//require the library require 'src/Validate.php'; use Validate\octaValidate; //set configuration $options = array( "stripTags" => true, "strictMode" => true, "strictWords" => ["null", "undefined"] ); //create new instance $myForm = new octaValidate('FORM_ID', $options);
参考方法
创建函数的新实例后,以下方法可供使用。
//create instance of the function $myForm = new octaValidate('FORM_ID');
-
validateFields($valRules, $fieldList)
调用此方法以开始对表单字段进行验证
-
validateFiles($valRules)
调用此方法以开始对上传的文件进行验证
-
getForm()
此方法返回附加到验证实例的表单 ID。
-
customRule($RULE_TITLE, $REG_EXP, $ERROR_TEXT)
调用此方法以定义您的验证规则。
-
moreCustomRules($RULES)
调用此方法以定义更多验证规则。
-
getVersion()
调用此方法以检索库的版本号。
文档中还有更多方法,请参阅文档以获取更多信息。
演示
- 打开演示文件夹中的任何文件并提交表单,或访问文档并在那里提交表单。