PHP中带有for循环的空空间验证

PHP中带有for循环的空空间验证,php,Php,如您所见,我有一个简单的注册表单和一个PHP脚本,用于验证一些字段。这里的想法是,如果您有20多个字段,并且至少需要用户填写用户名、姓氏和年龄,然后将其存储在一个数组中,就像我在下面所做的那样 <pre> <form action='' method='POST'> <input type='text' name='username' /> <input type='text' name='lastname' /> <

如您所见,我有一个简单的注册表单和一个PHP脚本,用于验证一些字段。这里的想法是,如果您有20多个字段,并且至少需要用户填写用户名、姓氏和年龄,然后将其存储在一个数组中,就像我在下面所做的那样

<pre>
<form action='' method='POST'>
    <input type='text' name='username' />
    <input type='text' name='lastname' />
    <input type='text' name='age' />
    <input type='text' name='gender' />
    <input type='text' name='country' />
    <input type='submit' name='reqirester' />
</form>


<?php 

    $needed = array("username", "lastname", "age");

  if($_POST):
    $check = NULL;
for($i=0; $i < count($needed); $i++){

        if($_POST[$needed[$i]] == ''){
          echo '<p>You must fill '.$needed[$i].' to continue<p/>';
        break;  

        }else {
            echo '<p>Required fileds are filled</p>';
        }
    }
 endif;
$needed=数组(“用户名”、“姓氏”、“年龄”)因此,正如您在代码中所看到的,我对
执行一个
循环,以检查其中一个是否已填充,
现在,代码在很大程度上起作用了。例如:如果你不填写这三个字段,它会说

您必须填写用户名才能继续

您必须填写lastname才能继续

您必须填写年龄才能继续

但是,如果您在字段上填充并留下另外两个,或者填充两个然后留下一个,则只会回显
“所需的文件已填充”

因此,这里的问题是,在脚本可以说
echo'所需的文件已填充之前,所有字段都应该被填充


$needed=数组(“用户名”、“姓氏”、“年龄”);
$error=false;
$msg='';
foreach($需要作为$值){
if(空($\u POST[$value]){
$msg=。“请填写'.htmlspecialchars($\u POST[$value])。
”; $error=true; } } 如果($error==true){ echo$msg; }否则{ 回音‘太好了!完成了’; }
为什么不:

foreach($missing as $key)
  printf('<p>You must fill %s to continue</p>', $key);

if(!$missing)
  print '<p>Required fileds are filled</p>';
或者使用您的输出:

foreach($key缺少)
printf(“您必须填写%s才能继续,

”,$key); 如果(!$缺失) 打印“已填写所需文件”


@kranzdot:如果你有很多错误,为什么不麻烦告诉我们是什么错误呢?嗯,
if(空($\u POST[$value])中有
1
你忘了一个
,然后是
2
,在
l in'.htmlsp
中出现意外错误。
错误,我忘记了,有4个错误,我刚停下来。但无论如何,谢谢当您单击提交按钮时,它只会说“您错过了”没有输出任何内容。这意味着所有字段都已填充。我添加了一个复选框,如果soNow,则跳过该消息,这几乎很好。但是,当所有三个字段都是字段时,它不会回显任何内容,或者我应该只向itThanks man添加
else
语句。这真是天才,尽管您可能编辑了ans 10次:)
$required = array("username", "lastname", "age");
$missing = array_keys(array_diff_key(array_flip($required), array_filter($_POST)));

if($missing)
  printf('You missed: %s', implode(', ', $missing));
foreach($missing as $key)
  printf('<p>You must fill %s to continue</p>', $key);

if(!$missing)
  print '<p>Required fileds are filled</p>';