如何动态检查 $_POST 变量是否为 NULL

How to Check $_POST Variables for NULL dynamically

如何遍历表单发送的 $_POST 个变量以确保其中 none 个变量为空或 NULL。例如,如果一个表单有 15 个字段并被提交。如何检查这 15 个字段中的每一个是否实际包含 NULL 以外的内容。我有多个表单,但有一个验证器 class,所以我无法在 post 数组中指定需要为每个表单检查的变量。

我尝试使用 foreach 但似乎清除了 $_POST 数组或出于某种原因损坏了它?下面给出了无效代码。如果我 var_dump($_POST) 在我使用 foreach 之前和在 foreach 之后我得到一个空数组,但之前的值是正确的。所以我认为 foreach 是不可能的。有什么想法吗?

foreach($_POST as $key => $value)
{
if ($value==NULL)
header ("Location: index.php")
}

试试这个

 foreach($_POST as $key => $value)
    {
    if (empty($value))
    header ("Location: index.php")
    }

你可以这样做:

foreach($_POST as $key => $value)
{
   $valid = 15;
   if(empty($value))
     $valid --;

   if($valid == 15)
    {
     //validation ok
    }

   else  //This means at least one of the 15 fields is empty
     header ("Location: index.php")
}

第二种方案:在你看来最好用array,比如

<input type="text" name="Form[name]" />
<input type="text" name="Form[family]" />
... 
<input type="text" name="Form[address]" />

在这种情况下,$_POST['Form'] 是一个数组,您可以访问它的元素。例如 $_POST['Form']['name'] 等于第一个文本框的值。 所以你的 foreach 应该是这样的:

foreach($_POST['Form'] as $key => $value)
...

您不会在 $_POST 数组中得到任何 NULL 值。如果表单提交成功并且 HTML 表单未被篡改,那么所有字段至少都会有一些值,否则它们将是空的 ''。不要使用 PHP 的 empty() 函数,因为它甚至将 0 和其他一些值视为空值,而这实际上可能是该值。我相信这是编写代码的正确方法:

foreach ($_POST as $key => $value) {
    if ($value === '')
        header("Location: index.php");
}

littlibex 给出的代码有效谢谢

foreach ($_POST as $key => $value) {
if ($value === '')
    header("Location: index.php");
}

虽然我只用了两个等号。