priteshyadav444/validation

该库受Laravel验证的启发,为Core PHP表单验证提供了有限的但类似的功能。

v1.0.0 2023-02-20 09:28 UTC

This package is auto-updated.

Last update: 2024-09-19 16:25:34 UTC


README

该库受Laravel验证的启发,为表单验证提供了有限的但类似的功能。它允许开发者以简单、易读的格式(例如“required|numeric”)定义验证规则,并快速验证用户输入。这有助于确保表单中输入的数据是准确、一致并符合某些标准的,从而提高整体用户体验并降低应用中错误的风险。

该库为PHP中不同类型的数据输入提供了验证类。它包括以下类

  • Validate:包含用于验证单个输入(如字符串、数字和密码)的函数。
  • FormValidator:使用Validate类验证表单输入并返回错误。
  • FileValidator:验证和上传文件。它接收一个$_FILES对象和一个用于标识文件的键,以及用于上传文件的目标目录。
  • ErrorHandler:返回错误消息,并提供用于处理特定表单输入的错误的方法。

特性

  • 易于使用
  • 类似Laravel的API
  • 文件处理
  • 验证
  • 错误处理

需求

  • PHP 7.0或更高版本。

使用 - 如何在Core PHP中用于表单验证

FormValidator类

FormValidator类使用Validate类通过Error类验证表单输入并返回错误。如何使用

  1. 通过使用require或include语句将FormValidator类包含到您的代码中。

  2. 创建FormValidator类的一个实例并将其存储在一个变量中。

  3. 在FormValidator类的实例上调用validate方法,并将表单数据和验证规则作为参数传递给它。

  4. validate方法将根据规则验证表单数据,如果数据有效则返回true,否则返回false。

  5. 如果validate方法返回false,您可以通过FormValidator类的实例上的errors方法访问错误消息。

    $path = "../../validation/validators/FormValidator.php"; 
    indlude "$path";
    use Validators\{FormValidator, FileValidator};
    $obj = new FormValidator();
    
    if (isset($_POST['submit'])) {
    $validations = [
        'name' => 'string',
        'email' => 'email',
        'phone' => 'numeric|min:10|max:10',
        'docs' => 'required|filetype:txt'
    ];
    
    if (!$obj->validate($_POST, $validations)->isError()) {
        $file = new FileValidator($_FILES, "docs", "files");
        $file->upload();
        }
    }
    

FormValidator类使用ErrorHandler类来处理错误:使用isError()方法和all()方法可以列出错误。

if ($obj->isError() != false) {
        echo '<div class="alert alert-danger" role="alert">';
        foreach ($obj->all() as $error)
            echo "<li>$error</li>";
        echo '</div>';
}

要填充有效的旧值,我们可以使用old()方法。

<div class="mb-3">
  <label for="name" class="form-label">Name</label>
  <input type="text" name="name" value='<?php echo "{$obj->old('name')}"; ?>' class="form-control" id="name" >
</div>
<div class="mb-3">
  <label for="email" class="form-label">Email</label>
  <input type="email" oninvalid="InvalidMsg(this);" oninput="InvalidMsg(this);" name="email" value='<?php echo "{$obj->old('email')}"; ?>' class="form-control" id="email" aria-describedby="emailHelp">
</div>
<div class="mb-3">
  <label for="phone" class="form-label">Phone</label>
  <input type="text" name="phone" value='<?php echo "{$obj->old('phone')}"; ?>' class="form-control" id="phone">
</div>

ErrorHandler

ErrorHandle类提供处理和存储错误消息的函数。该类有设置错误消息、返回所有错误消息、检查是否存在错误和处理错误消息的函数。

  1. isError():方法检查对象中的$errors数组是否存储了任何错误,并返回一个表示错误存在的布尔值。如果传递了$key参数,它将检查在$errors数组中是否为该特定键存储了任何错误,并相应地返回一个布尔值。
  2. all():方法返回对象中$errors数组中存储的所有错误消息的数组。
  3. old($key):该old方法是PHP类中的一个函数,用于返回数据有效时的旧值。它接受一个参数$key,用于从名为oldValues的数组中检索值。

Validate

这是一个名为"Validate"的PHP类,它提供了验证不同数据类型(整数、浮点数、字符串、电子邮件、密码)的函数,以及获取不同数据类型(整数、字符串、长度)的函数。该类还包括通过继承"ErrorHandler"类实现的错误处理功能。以下方法

  1. isInt:验证输入是否为整数。

  2. isfloat:验证输入是否为浮点数。

  3. isString:验证输入是否为字符串。

  4. isEmail:验证输入是否为有效的电子邮件地址。

  5. getInt:将输入返回为整数、浮点数或布尔值(false),如果它无效。

  6. getString:将输入返回为字符串或布尔值(false),如果它不是有效的字符串。

  7. getLength:返回输入的长度。

  8. checkMinimum:检查输入的长度是否大于或等于指定的长度。

  9. checkMaximum:检查输入的长度是否小于或等于指定的长度。

  10. checkPassword:根据指定的正则表达式验证输入是否为密码。

  11. extractInteger:从输入中提取仅整数部分。

  12. extractFloat:从输入中提取仅浮点数部分。

  13. senitizeInput:这是一个安全措施,用于清理用户输入。它按以下顺序执行以下操作

    • 使用trim()删除输入字符串开头和结尾的任何空白。

    • 使用stripslashes()从输入字符串中删除反斜杠(\)。

    • 使用htmlspecialchars()将输入字符串中的任何特殊HTML字符转换为相应的HTML实体。

这些操作的目的确保输入数据没有恶意内容,例如脚本,可能会损害应用程序。该方法将清理后的输入作为结果返回。

在此库中添加自定义验证的步骤

  1. 在Validate类中创建一个返回布尔值的验证方法。例如:在Validate类中public function checkEmail():bool。

  2. 在FormValidation类的getValidationType()方法内的match函数中将验证键映射到验证类型。例如,'email' => CHECK_EMAIL。

  3. 在errorHandler类的getErrorMessage()方法中将$validationType映射到错误代码。例如,'CHECK_EMAIL' => 'INVALID_DATATYPE_KEY'。

  4. 在errorHandler类的$errorHandler属性中将$errorCode映射到错误消息。例如,'INVALID_DATATYPE_KEY' => 'Invalid Data types'。

  5. 在FormValidator的performValidation()方法中添加对$validationType(CHECK_EMAIL)的条件语句。

    • 使用Validate类方法执行验证,如果验证失败则调用setError()方法,并
    • 通过getErrorMessage()方法传递错误消息,通过传递$validationType(如果验证失败)和其他必要参数。

对库用户的 重要通知

请注意,此库尚未完全测试,可能存在错误。如果在使用此库时遇到任何问题,我们恳请您在此存储库的问题部分中报告它们。这将使我们能够尽快识别和解决任何问题。

感谢您的理解与合作。