2012-07-27 51 views
4

到「GET」在做一點挖這個的,但是,沒有運氣找到信息

我試圖檢查表單是否已經提交,如果它是GETPOST。所以基本上我用:

if($_SERVER['REQUEST_METHOD'] == 'GET') 

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

然而,我發現,如果我不提交任何形式的,只是直接轉到頁 - 一個簡單的HTTP請求時,REQUEST_METHODGET。是什麼賦予了?這是設計嗎?如果是這樣,那麼我不能使用前面的語句來檢查表單是否已通過GET提交。似乎有點多餘...

有人多一點知識,請解釋這給我,這將不勝感激。謝謝。

+2

如果有幫助:我通常用count($ _ GET)或count($ _ POST)來檢查。 – NotGaeL 2012-07-27 11:12:30

+0

是的,這有助於感謝你。 – chaser 2012-07-27 11:20:10

+3

@elcodedocle'empty($ _ POST)'和'empty($ _ GET)'比'count()'略高效,但不是太多,這絕對是微型優化。 – DaveRandom 2012-07-27 11:20:39

回答

7

基本上大多數HTTP請求都是GET請求。

您可以使用if($_POST)來檢查它是否是POST。 (這是與它POST數據的陣列。所有頁面都$_GET集,所以if($_GET)將無法​​正常工作,以判斷它是一個GET)

然而,if(count($_GET)>0)會告訴你,如果有$ _GET數據。

您可以同時POST雖然獲取數據,通過它與GET數據發送POST請求的URL(即http://example.unreal?GetData=4&OtherData=no

+0

感謝您的澄清,我會從現在開始使用++++ – chaser 2012-07-27 11:20:37

1

通過瀏覽器簡單地將一個頁面或點擊一個鏈接是一個GET請求。

+0

我看,這是很好的知道。謝謝。 – chaser 2012-07-27 11:21:20

1

我遇到了同樣的問題,並通過以下方式解決: 當表單動作設置爲iprofile?r=search時,請求方法始終爲GET,表單中的所有輸入數據都將丟失。但是,當我將操作設置爲iprofile/?r=search時,請求方法變爲POST。

也許你也可以檢查你的動作URL。