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

时间:2015-04-13 05:19:41

标签: php arrays foreach

如何遍历表单发送的$_POST变量,以确保它们都不为空或NULL。例如,如果表单有15个字段并已提交。如何检查这15个字段中的每个字段实际上是否包含NULL以外的内容。我有多个Forms但只有一个验证器类,因此我无法在post数组中指定需要为每个表单检查的变量。

我尝试使用foreach但是这似乎清除了$_POST数组或因某种原因损坏了它?下面给出了不工作的代码。如果我在使用foreach之前我var_dump($_POST)并且在foreach之后我得到一个空数组,但之前是正确的值。所以我的事情是不可能的。任何想法?

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

4 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

试试这个

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

答案 2 :(得分:0)

你可以这样做:

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

答案 3 :(得分:0)

littlibex给出的代码工作谢谢

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

我只使用了两个相同的标志。