2

我正在构建一个表单(有趣),显然这些会变得乏味,当我坐在这里编写验证函数时,我想知道......

比如说我有 3 个字段* (姓名、姓氏、年龄) *

变量是

$fname = $_POST['name'];
$lname = $POST['lname'];
$age = $_POST['age'];

并说我想检查是否有空,id

if(empty($fname) || empty($lname) || empty($age)){
//do something
}

有没有办法让这更易于管理?因为现在说,我有 100 个字段,而不是表单中的 3 个字段......它变得非常不守规矩

那么有没有办法可以检查 en-mass ?

4

5 回答 5

2
$required_fields = array("name", "address", "phone", "email");
foreach ($require_fields as $field) {
    if (!strlen($_POST[$field])) {
        echo "$field cannot be empty";
    }
}

编辑:您可以通过以下方式获取 $_POST 数组

foreach ($_POST as $key => $name) {
            $required_fields[] = "$key=$name";
        }
于 2013-03-30T09:23:35.037 回答
1

if(empty($_POST)){..}else{...}会给你结果,取决于, 如果设置了多个值;或者根本没有设置任何值。有点像真/假。

但是,你不能value=''为“提交按钮”本身包含一个,否则,它会一直给你一个真实的结果。因为是$_POST全局的,所以也会检查提交按钮的值。或者,您可以从查询中扣除一个值。或者,您可以通过以下方式调试值var_dump($_POST)

如果要检查“至少一个字段不为空”,那么,

if(count($_POST) !=0){
   echo ' at least one value is set';}
else {echo 'no value is set';}

将检查是否至少提交了一项。

于 2013-03-30T09:19:08.527 回答
1

如果您想检查所有这些,请按照以下方式进行操作。

if(!empty($_POST)){

   foreach($_POST as $key => $val){
      if(empty($val)){
          // An empty field exists. Your action here.
      }
   }
}

尽管值得注意的是,如果您的页面上有未勾选的复选框,则空的 $_POST 条目将不会被发回,它根本不存在。

因此,您需要使用 if 语句检查复选框。

例如,复选框名称为“同意”

if(!isset($_POST['agree'])){
   // Checkbox not ticked.
}
于 2013-03-30T09:19:52.590 回答
0

检查每个帖子键

if(isset($_POST) && count($_POST)!=0){
  foreach($_POST as $key=>$val){
     如果(空($key)){
        /* 做一点事 */
     }
  }
}
于 2013-03-30T09:24:45.897 回答
0

顺便提一句。如果你这样做

$fname = $_POST['name']

并且该字段不是您将获得的形式

注意:未定义的索引...

更好地使用

$fname = !empty($_POST['name']) ? $_POST['name'] : '';
于 2013-03-30T09:25:30.970 回答