php - validate() 函数中的 php 表单验证错误

标签 php

在这段代码中,我无法匹配 validate() 函数中的正则表达式 帮我找出错误的地方

我在用户输入中输入了除字母以外的数据,例如 (john1246@##$##@+-) 它在 validate() 函数中返回输入值 (john1246@##$##@+-) 或 $data,但未显示应返回 PRG_MTH_ERR 的错误。我的代码有什么问题?

验证.php

function validate($data, $reg_exp = "") {
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    if (empty($data) == true) {
        return "EMT_FLD";
    } elseif ($data != preg_match($reg_exp,$data)) {
        return "PRG_MTH_ERR";
    } else {
        return $data;
     }
}

登录.php

if (isset($_POST['login'])) {
     include "./database/db.php";
     $db = new db();
     include 'validate.php';

     echo validate($_POST['user'],"/^['a-zA-z']$/");
}

我预计它会返回 PRG_MTH_ERR 但它会返回 $data

最佳答案

松散比较是你的问题:

elseif ($data != preg_match($reg_exp,$data)) {

因为 "john1246@##$##@+-"== 0 为真。

您可以将 1 与 preg_match 的结果进行比较(请参阅 the doc 以了解有关 preg_match 的更多信息)

关于php - validate() 函数中的 php 表单验证错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56162829/

相关文章:

php - 在 pdo 数组中使用变量

php - 每次单击按钮时将 PHP 变量更改 1036800。

php - 我需要从 mysql_query 转换为 PDO 的帮助

php - 相当于 file_get_contents ("php://input");在经典的asp中

php - 使用php上传文件时如何设置特定路径

php - 如何格式化多维/嵌套数组,使其仅返回整数而不返回列标题?

php - 帮助运行 MySQL。 SQL yog 给出错误 HY000) : Can't connect to MySQL server on 'localhost' (10061)

php - Symfony sql 获取查询的子和

PHP根据输入字段中给定的数字显示多个星号

php - 拉维尔 5.7 : target is not instantiable while building