bitapps/wp-validator

WordPress 验证和清理库

1.1.0 2024-07-25 10:32 UTC

README

使用 PHP 库验证和清理表单输入和 API 请求,该库受 Laravel 启发,专门为 WordPress 设计。

Latest Stable Version Total Downloads License: MIT

概述

WP Validator 是一个受 Laravel 启发的全面 PHP 包。它简化了 WordPress 的数据验证和清理过程,为开发者提供了一个灵活且用户友好的解决方案,以确保用户输入满足特定标准并防范常见漏洞。

特性

  • 数据验证:轻松验证用户输入、表单提交和 API 请求。
  • 自定义验证规则:定义满足您应用程序特定需求的自定义验证规则。
  • 错误信息:详细的错误信息,帮助用户理解验证失败的原因。
  • 数据清理:可选的数据清理函数,用于清理和格式化数据。

示例用法

要在您的 PHP 应用程序中使用 wp-validator 包进行数据验证,请按照以下步骤操作

1. 安装包

首先,使用 Composer 安装 WP Validator 包

composer require bitapps/wp-validator

2. 初始化验证器

从包中创建 Validator 类的实例

use BitApps\WPValidator\Validator;

$validator = new Validator;

有关可以使用 $validator 的公共方法,请参阅 验证器实例方法 部分。

3. 定义您的数据和验证规则

准备好您要验证的数据并定义验证规则。以下是一个示例

$data = [
    'first_name' => 'John',
    'last_name' => '',
    'email' => 'email@example',
    'password' => '##112233',
    'confirm_password' => '##112233',
];

$rules = [
    'first_name' => ['required', 'string'],
    'last_name' => ['required', 'string'],
    'email' => ['required', 'email'],
    'password' => ['required', 'min:8'],
    'confirm_password' => ['required', 'min:6', 'same:password'],
];

可用验证规则 部分中探索所有可用的验证规则及其用法。

4. 自定义错误信息(可选)

如果您需要自定义错误信息,可以使用 $customMessages 数组。在此示例中,我们将其留空。

$customMessages = [];

有关自定义错误信息的更多信息,请参阅 自定义错误信息 部分。

5. 映射属性名称(可选)

使用 $attributes 数组将字段名称映射到用户友好的标签,这些标签将用于错误信息。

$attributes = [
    'first_name' => 'First Name',
    'last_name' => 'Last Name',
    'email' => 'Email',
];

6. 执行验证

使用 make 方法执行验证

$validation = $validator->make($data, $rules, $customMessages, $attributes);

7. 处理验证结果

检查验证是否失败,如果是,则打印验证错误

if ($validation->fails()) {
    echo "<pre>";
    echo print_r($validation->errors(), true);
    echo "</pre>";
} else {
    echo "Success!";
}

验证器实例方法

make($data: array, $rules: array[, $customMessages?: array, $attributes?: array])

此方法根据提供的 $rules$data 进行验证。如果传递 $customMessages$attributes,它将根据这些信息生成错误信息(如果有)。

fails(): boolean

此方法将根据验证状态返回 true 或 false。如果返回 true,则表示验证器在数据中发现了错误,您可以通过 errors() 方法获取这些错误。

errors(): array

此方法将返回基于在 make 方法中传递的格式化 $data 数组的错误信息(如果有)。

可用验证规则

WP Validator 提供了一套全面的验证规则,以满足您的需求。以下是可用规则列表

  1. accepted
    检查待验证的字段是否是以下之一:'yes''on''1'1'true'true。这适用于验证协议类型字段。
  2. array
    检查待验证的字段是否为数组。
  3. between:min,max
    检查待验证的字段是否在:min:max(包含)范围内。
    • 对于字符串数据,值对应字符数。
    • 对于数值数据,值对应给定的整数。
    • 对于数组,值对应数组的计数。
  4. date
    检查待验证的字段是否是有效的日期(根据strtotime PHP函数)。
  5. digit_between:min,max
    检查整数数字的位数是否在:min:max(包含)范围内。
  6. digits:value
    检查整数数字的位数是否正好等于:digits
  7. email
    检查待验证的字段是否是有效的电子邮件地址。
  8. integer
    检查待验证的字段是否是整数。
  9. ip
    检查待验证的字段是否是有效的IP地址(IPv4,IPv6)。
  10. ipv4
    检查待验证的字段是否是有效的IPv4地址。
  11. ipv6
    检查待验证的字段是否是有效的IPv6地址。
  12. json
    检查待验证的字段是否是有效的JSON字符串。
  13. lowercase
    检查待验证的字段是否全部由小写字母组成。
  14. mac_address
    检查待验证的字段是否是有效的MAC地址。
  15. max:value
    检查待验证的字段是否小于或等于:max
    • 对于字符串数据,值对应字符数。
    • 对于数值数据,值对应给定的整数。
    • 对于数组,值对应数组的计数。
  16. min:value
    检查待验证的字段是否具有最小值:min
    • 对于字符串数据,值对应字符数。
    • 对于数值数据,值对应给定的整数。
    • 对于数组,值对应数组的计数。
  17. nullable
    将待验证的字段设置为可选(允许为null),但如果指定了其他验证规则且值不为null,则仍需遵守。
  18. numeric
    检查待验证的字段是否是有效的实数。
  19. required
    检查待验证的字段是否存在且不为空。如果字段满足以下任一条件,则认为是“空”的:
    • 值是NULLFALSE
    • 值是空字符串。
    • 值是空数组或空可计数对象。
  20. same:field
    检查待验证的字段是否与指定的:other属性相等。
  21. size:value
    检查待验证的字段的大小是否与:size完全相同。
    • 对于字符串数据,值对应字符数。
    • 对于数值数据,值对应给定的整数。
    • 对于数组,值对应数组的计数。
  22. string
    检查给定的值是否是字符串。
  23. uppercase
    检查字符串值是否全部由大写字母组成。
  24. url
    检查值是否是有效的URL。

缺少您需要的任何验证规则?请参阅自定义验证规则部分,了解如何在项目中创建和使用自定义验证规则。

可用的清理函数

  1. sanitize_email
    删除电子邮件地址中不允许的所有字符。
    例如:['email' => ['required', 'email', 'sanitize:email']

  2. sanitize_file_name
    通过删除特殊字符清理文件名。
    例如:['file' => ['required', 'string', 'sanitize:file_name']

  3. sanitize_html_class
    使用允许的HTML标签清理类属性的内容。
    例如:['class' => ['required', 'string', 'sanitize:html_class']

  4. sanitize_key
    使用允许的HTML标签清理键属性的内容。
    例如:['key' => ['required', 'string', 'sanitize:sanitize_key']

  5. sanitize_text
    去除字符串中不允许的所有字符。
    例如:['name' => ['required', 'string', 'sanitize:text']]

  6. sanitize_textarea_field
    对textarea字段的内容进行净化,允许使用指定的HTML标签。
    例如:['content' => ['required', 'string', 'sanitize:textarea']]

  7. sanitize_title
    去除标题中不允许的所有字符。
    例如:['title' => ['required', 'string', 'sanitize:title']]

  8. sanitize_user
    净化用户名,去除不安全的字符。
    例如:['user' => ['required', 'string', 'sanitize:user']]

  9. sanitize_url
    通过移除HTML属性中不合法的字符来净化URL。
    例如:['url' => ['required', 'url', 'sanitize:url']]

  10. wp_kses
    使用允许的HTML标签净化内容。
    例如:['content' => ['required', 'string', 'sanitize:wp_kses|a.href,a.title,br,em,strong']]

  11. wp_kses_post
    为帖子内容允许的HTML标签净化内容。
    例如:['content' => ['required', 'string', 'sanitize:wp_kses_post']]

自定义验证规则

将验证规则类创建到您的项目中

<?php

use BitApps\WPValidator\Rule;

class BooleanRule extends Rule
{
    // error message if fails...
    private $message = "The :attribute must be a boolean";

    public function validate($value)
    {
        // validation code here...
        return is_bool($value);
    }

    public function message()
    {
        return $this->message;
    }
}

将它们作为实例传递到$rules数组中

$rules = [
    'agreed' => ['required', new BooleanRule],
];

自定义错误信息

WP Validator基于验证规则提供默认错误信息。为了增加灵活性,您可以全局更改这些错误信息,甚至为特定字段和验证规则更改

$customMessages = [
    'required' => ':attribute is missing',
    'string' => ':attribute cannot contain any numerics',
    'between' => 'The :attribute must be given between :min & :max',
    'size' => 'The account number must consist of :size characters',
];

现在,对于每个验证规则,它将返回您设置的定制错误信息。注意: :attribute指的是当前正在验证的字段,如果通过$attributes数组更改了自定义标签,则充当占位符。我们还有更多这样的占位符;在占位符列表部分中探索它们。

如果您希望有更大的灵活性,并希望为每个验证规则和字段单独自定义错误信息,您也可以实现这一点

$customMessages = [
    'first_name' => [
        'required' => 'First name must be present',
        'string' => 'You cannot include anything except letters in the first name',
    ],
    'email' => [
        'email' => 'The provided email is not valid',
    ],
];

如果您使用了未在自定义消息数组中提到的任何其他验证规则,WP Validator将遵循默认错误信息。

占位符列表

  1. :attribute
    它将引用正在验证的字段名称,如果通过$attributes数组更改了自定义标签,则引用自定义标签。
  2. :value
    它将引用正在验证的字段值。
  3. :min
    它将引用betweendigits_betweenmin验证规则的最小值参数。
  4. :max
    它将引用betweendigits_betweenmax验证规则的最大值参数。
  5. :digits
    它将引用digits验证规则的价值参数。
  6. :other
    它将引用same验证规则的字段参数。
  7. :size
    它将引用size验证规则的价值参数。

贡献

我们欢迎社区的贡献。如果您发现了一个错误或有一个功能建议,请打开一个问题或提交一个pull请求。

许可证

此包是开源的,可在MIT许可证下使用。