我想知道爲什麼:沒有在我的PHP頁面上單擊表單上的提交按鈕,0變量已經設置。PHP _POST數組
例如,我有這樣的一段代碼的網頁上:
if (isset($_POST)){
echo "XXXXXXX";
}
原來只是在頁面加載時的第一次的XXXXXX
是呼應 - 在這一點上我當然有沒有使用POST向服務器提交任何數據。爲什麼會這樣呢?
我想知道爲什麼:沒有在我的PHP頁面上單擊表單上的提交按鈕,0變量已經設置。PHP _POST數組
例如,我有這樣的一段代碼的網頁上:
if (isset($_POST)){
echo "XXXXXXX";
}
原來只是在頁面加載時的第一次的XXXXXX
是呼應 - 在這一點上我當然有沒有使用POST向服務器提交任何數據。爲什麼會這樣呢?
$_POST
是一個超全局數組,它總是被設置。如果你沒有使用post方法給它傳遞任何值,它將是空的。因此,一個值設置爲這個數組,並檢查該值是否可用或者不喜歡這樣的:
if(isset($_POST['submit'])){
//Do this...
}
檢查變量是否爲空。將始終設置爲$_POST
。
所以像下面應該工作:
if(!empty($_POST['textFieldName'])){
echo "XXXXXXX";
}
由於上PHP.net指定,則自動創建它。
這是一個'超全球'或自動全局變量。這僅僅意味着它在整個腳本的所有範圍內都可用。沒有必要做全局$變量;在函數或方法中訪問它。
要解決您的代碼,它是創建,但它是空的。
爲了更好的測試,如果用戶已經做出了POST
要求,只需測試上$_POST
的指數,像isset($_POST['someFieldName'])
你的代碼應該測試它是否爲空或不:
if(!empty($_POST)){
echo "a";
}
或
if(isset($_POST['someFieldName'])){
echo "a";
}
同樣是爲$_GET
超全局真。無論HTTP方法如何,都會始終設置它們。您可以檢查是否有請求是POST
,GET
,PUT
等通過檢查REQUEST_METHOD
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// this was an HTTP POST request
}
$ _ POST是超全局變量,它總是設置爲空數組。 試試這個,只是爲了更好地理解:
if(!is_null($_POST))
{
print_r($_POST);
}
爲什麼這會幫助你理解嗎? - 因爲isset檢查是否設置了變量並且不是NULL。