2015-09-25 127 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,而不是一個帖子變量 –