2013-03-05 134 views
20

我想知道如何檢測$ _POST是否設置。

現在,我發現它是這樣的:

if(isset($_POST['value'])) 

但如果值設置了我不是在尋找。基本上,任何POST都可以工作。

if(isset($_POST)) 

我不知道PHP如何處理這個。 Perhabs isset($ _ POST)總是返回true,因爲它是一個PHP全局?

基本上,我該怎麼做?

+1

'$ _POST'總是伴隨一個頭請求,**將**包含值。也許你想要'$ _SERVER ['REQUEST_METHOD'] =='POST'。 – BenM 2013-03-05 09:55:15

+2

你想知道'$ _POST'是否包含* any *數據或請求是否使用HTTP POST方法? – deceze 2013-03-05 09:57:09

回答

48

與嘗試:

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

檢查,如果你的腳本被張貼。

如果通過了其他數據,$_POST將不會爲空,否則會。

您可以使用empty方法來檢查它是否包含數據。

if (!empty($_POST)) {} 
+1

這是行不通的,我測試了它.. – 2013-03-05 09:58:02

+5

因爲'$ _POST'總是存在'if($ _POST)'會做得很好,不需要'empty'。 – deceze 2013-03-05 09:58:18

+1

@DipeshParmar什麼不起作用? – hsz 2013-03-05 09:59:24

3

一個簡單的解決方案可能是隻使用

if (!empty($_POST)) 
+1

不是解決錯誤的答案... – 2013-03-05 09:59:31

3

正如下面使用它。因爲它的super global因此在檢查issetempty時總是返回true。

<?php 
    if($_POST) 
    { 
     echo "yes"; 
    } 
?> 
+0

@向下選民請解釋一下我也試過空,但沒有工作...... – 2013-03-05 09:58:25

+1

事實上,這工作得很好。所以應該'空',但它是多餘的。 – deceze 2013-03-05 10:01:03

9

$_POST是一個數組。您可以檢查:

count($_POST) 

如果它大於零表示發佈了一些值。

2

我知道這個答案已經回答了,但這裏有一個簡單的方法,我用我的一個類來計算後是否已設置(也許有人會發現它很有用):

public function isPost($key = null) { 

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

     return false; 

    } 

    if (!empty($key)) { 

     return isset($_POST[$key]); 

    } 

    return true; 

} 
-1

最好的方法來檢查$ _POST

<?php 
if(isset($_POST['value']) && !empty($_POST['value'])) 
{ 
return true; 
} 
else 
{ 
return false; 
} 
+0

小心'empty()'!一個零(「0」)的字符串被認爲是空的。此外,與'isset()'一起使用是多餘的。 – 2017-04-04 15:43:01

相關問題