使用for循环在PHP中进行空白空间验证

时间:2013-05-02 16:52:44

标签: php

正如您所看到的,我有一个简单的注册表单和一个PHP脚本只是为了验证某些字段。这里的想法是,如果你有20多个字段,并且你至少要求用户填写.. 用户名,姓氏和年龄,那么你将它存储在一个像我已经完成的数组中下面。

$needed = array("username", "lastname", "age");因此,正如您在代码中看到的那样,我执行for循环来检查其中一个是否已填充, 现在代码大部分都有效。例如:如果你没有填写三个字段,它会说

  

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

     

您必须填写姓氏才能继续

     

您必须填写年龄才能继续

但是,如果您填写字段并离开其他两个,或填充两个然后留下一个,它将只回显'<p>Required fileds are filled</p>';

所以,这里的问题是,在脚本可以说echo '<p>Required fileds are filled</p>';之前应该填写所有字段

<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;

2 个答案:

答案 0 :(得分:1)

$needed = array("username", "lastname", "age");
$error = false;
$msg = '';

foreach ($needed as $value) {
    if(empty($_POST[$value]) {
      $msg =. 'please fill in ' . htmlspecialchars($_POST[$value]) .'<br/>';
      $error = true;
    }
}

if($error === true) {
  echo $msg;
} else {
  echo 'Great! finished';
}

答案 1 :(得分:1)

为什么不:

$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>';