2015-09-25 100 views
2

我在测试php中的空函数,但它不起作用,因为if语句可以被访问,无论条件是false还是true。

<?php 
    if(empty($_POST) === false){ 

     echo 'text'; 
} 
?> 



<form action="index.php" method="post"> 
    Username: 
    <input type="text" name="text"> 
    <input type="submit" name="submit"> 
</form> 

即使输入为空,也会执行回显。

为什么?

+0

你看到了什么,如果你'if'语句之前的'var_dump($ _ POST)'?当你期望它的时候''_POST'可能不是空的。 –

+0

即使输入本身为空,仍然会发布空值。只有在表单下方没有任何输入的情况下,您的“if”才有效。 –

+0

谢谢大家,我将使用var_dump($ _ POST),因为我从来没有见过它! –

回答

4

这是因为$_POST在收到来自form的POST请求后将不会为空,其input值将在其中。

如果var_dump你的,你会看到:

textarray(2) { ["text"]=> string(0) "" ["submit"]=> string(12) "Submit Query" } 

即使你submit input发送(因为它是form的一部分)。即使没有收到任何东西,$_POST将返回一个空集数组,所以isset都不是检查POST失败或成功的好选择。

您需要评估一个特定字段,如$_POST['text'],而不是空白。

+0

非常感谢,我用它作为我正在观看的教程。那为什么我感到困惑。谢谢。 –

+0

@AhmadzIssa考虑通过点击该答案投票数下面的勾号按钮接受他的答案,如果它帮助你解决你的问题。欢呼声x) – user5173426

+0

我不得不等待5个薄荷糖来做到这一点^^。谢谢。 –

1
if(isset $_POST["text"] && $_POST["text"] !=null) 

也,请尝试使用==,而不是=== ==定投的$ _ POST值,所以如果它是NULL,它将被作为虚假评估,而不是

+0

什么是'! - ='?我从未在 –

+1

'! - = null'之前看到它?可能想更密切地关注一下。不,不要使用'=='。这将使'0'测试同样如此,并且空字符串......两者都是完全有效的提交值。 –

+0

修正了错字,对不起。 我建议==,因为他正在评估$ _POST,而不是一个帖子变量 –