simon-ugorji/octavalidate-php

这是一个功能丰富的表单验证库,可以帮助您在服务器端使用复杂的正则表达式、PHP 内置验证和验证规则来验证表单。

v2.1 2022-10-05 10:34 UTC

This package is auto-updated.

Last update: 2024-09-05 14:57:41 UTC


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()

    调用此方法以检索库的版本号。

文档中还有更多方法,请参阅文档以获取更多信息。

演示

  • 打开演示文件夹中的任何文件并提交表单,或访问文档并在那里提交表单。

作者

Simon Ugorji

支持我

使用 PayPal 捐款

贡献者

Simon Ugorji