如何遍历表单发送的$_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")
}
答案 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");
}
我只使用了两个相同的标志。