2011-09-26 62 views
0

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

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

这是不正确的?

+1

$选择,$电子邮件,$文本是一个表单输入? –

+0

可能需要发布一些更多的代码 –

+0

对不起,因为他们是已经被检索的输入,但是这段代码什么也没做。 – Sam

回答

2

您可以像处理提交按钮一样引用它们。

即:$_POST['input_name']

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

我也建议你阅读了上PHP external variables

+0

但我已经将它们设置为代码中的那些变量。 – Sam

+0

然后跳到我答案的第二部分。 –

+0

小心空()。对于诸如“0”的值也返回true;可能不是你想要的。由于$ _POST变量以字符串形式发送给您,因此我会使用strlen()。只是我的2cc。 – maraspin

2

你可以做的是循环$ _POST变量。排除那些你不感兴趣,并进行类似:

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

...然后你做出你的选择上$ allIsOk。

这种做法是出于两个原因:

  1. 有了上面的建议,你需要检查结合起来,因为空() 将返回true 0,甚至是“0”,并可能导致撞头 问题。
  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 
}