检查是否已设置所有POST变量

时间:2014-12-12 22:05:03

标签: php

检查是否设置了所有$ _POST值的一些默认标准。我知道你可以做到以下几点:

if(isset($_POST['name']) && isset($_POST['username']))

但是当你遇到大型表格时会发生什么?他们会继续重复,直到通过['key']设置所有表单输入?

2 个答案:

答案 0 :(得分:0)

你也可以写:

<?php
if (isset($_POST) && $_POST != NULL ){

  foreach ($_POST as $key => $value) {

        // perform validation of each item
  }
?>

这是一个更详细的例子:

<?php
if (isset($_POST) && $_POST != NULL) {

$clean = array();

foreach ($_POST as $key => $value) {
    switch($key)
    {
    case "a":
      if (ctype_digit($value)){
        $clean[$key] = $value;      
      } break;
    case "b":
      if ( ctype_alpha($value)){
        $clean[$key] = $value;      
      } break;
    case "c":
      if ( ctype_alnum($value)){
         $clean[$key] = $value;     
      } break;
    case "d": 
      if (ctype_punct($value)){
         $clean[$key] = $value;     
      } break;
     default: echo $value, " is invalid data\n";
    }
}
var_dump($clean);

}

?>

因此,如果您的表单中包含输入字段a,b,c,d,并且有人欺骗了您的表单并添加了字段e,则前面的代码将不接受字段e中的值。

答案 1 :(得分:0)

您可以使用此功能:

if(!array_filter($_POST)) {
   //echo somthing to user to fill the form
}

array_filter迭代数组中的每个值,并将它们传递给回调函数。如果回调函数返回true,则将数组中的当前值返回到结果数组中。数组键被保留。