0

正如标题所说,我试图弄清楚如何在单击提交按钮后检查表单中是否有任何空条目。

if(isset($_POST['submit']) && ($selected == ''|| $text == '' || $email == ''))
{
  // *do things*
}
else{
  //*more things*
}

这是不正确的吗?

4

2 回答 2

2

您将以与处理提交按钮相同的方式引用它们。

那是:$_POST['input_name']

从那里使用适当的函数检查它:isset(),, empty()is_null()尽管表单变量很少遇到null

我还鼓励您阅读PHP 外部变量

于 2011-09-26T01:03:26.983 回答
2

您可以做的是遍历 $_POST 变量。排除那些你不感兴趣的,然后做一些类似的事情:

$allIsOk = true;
foreach ($_POST as $index => $value) {
  if (strlen($value)<1) {
    $allIsOk = false;      
  }
}

...然后您在 $allIsOk 上做出选择。

这种方法有两个原因:

  1. 根据上面的建议,您需要结合检查,因为 empty() 将返回 true 为 0 甚至“0”,并可能导致 headbanging 问题。
  2. 使用这种方法,您可以添加参数,而无需编写巨大的 if 语句

当然,这只是想法。检查文档总是明智的。此外,您可以用 array_walk 调用替换 foreach 循环,以使事情变得更有趣(尤其是从 PHP 5.3 开始)。;-)

祝你好运!

PS 另外,要确定您的脚本是否已被 POST 操作调用,而不是考虑提交元素,我建议您使用 $_SERVER 全局变量。http://php.net/manual/en/reserved.variables.server.php只需检查“REQUEST_METHOD”参数。

所以,你可能有:

if ('POST' == $_SERVER['REQUEST_METHOD']) {

  // It's ok for these to be null - or empty
  $exclude = array('submit', 'other_param');
  $allIsOk = true;
  foreach ($_POST as $index => $value) {
    if (!in_array($index, $exclude) && strlen($value)<1) {
      $allIsOk = false;      
    }
  }
}

if ($allIsOk) {
  // Do Something
} else {
  // Do Something Else
}
于 2011-09-26T01:19:51.200 回答