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