2015-08-15 133 views
0

我想知道爲什麼:沒有在我的PHP頁面上單擊表單上的提交按鈕,0​​變量已經設置。PHP _POST數組

例如,我有這樣的一段代碼的網頁上:

if (isset($_POST)){ 
    echo "XXXXXXX"; 
} 

原來只是在頁面加載時的第一次的XXXXXX是呼應 - 在這一點上我當然有沒有使用POST向服務器提交任何數據。爲什麼會這樣呢?

回答

0

$_POST是一個超全局數組,它總是被設置。如果你沒有使用post方法給它傳遞任何值,它將是空的。因此,一個值設置爲這個數組,並檢查該值是否可用或者不喜歡這樣的:

if(isset($_POST['submit'])){ 
//Do this... 
} 
0

檢查變量是否爲空。將始終設置爲$_POST

所以像下面應該工作:

if(!empty($_POST['textFieldName'])){ 
    echo "XXXXXXX"; 
} 
1

由於上PHP.net指定,則自動創建它。

這是一個'超全球'或自動全局變量。這僅僅意味着它在整個腳本的所有範圍內都可用。沒有必要做全局$變量;在函數或方法中訪問它。

要解決您的代碼,它創建,但它是空的。

爲了更好的測試,如果用戶已經做出了POST要求,只需測試上$_POST的指數,像isset($_POST['someFieldName'])

你的代碼應該測試它是否爲空或不:

if(!empty($_POST)){ 
    echo "a"; 
} 

if(isset($_POST['someFieldName'])){ 
    echo "a"; 
} 
0

同樣是爲$_GET超全局真。無論HTTP方法如何,都會始終設置它們。您可以檢查是否有請求是POSTGETPUT等通過檢查REQUEST_METHOD

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    // this was an HTTP POST request 
} 
0

$ _ POST是超全局變量,它總是設置爲空數組。 試試這個,只是爲了更好地理解:

if(!is_null($_POST)) 
{ 
    print_r($_POST); 
} 

爲什麼這會幫助你理解嗎? - 因爲isset檢查是否設置了變量並且不是NULL。