2014-07-21 155 views
0

我已經搜查了十幾答案在這裏有關:

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

然而,我仍然沒有找到一個答案爲什麼

爲什麼這樣做,如果我們已經設置了<form method="post">

這不是說這是唯一的表單方法嗎?

+0

這就是你如何判斷表單是以正常頁面請求的形式提交使用GET –

+0

你的意思是什麼答案?不可能說如果我們不知道什麼答案。但是代碼(obvioulsy)所做的是檢查請求方法是什麼。你爲什麼想要知道?那麼,如果你使用某種形式的REST服務,你會對POST做出不同的反應,然後對GET請求作出不同的反應,對於PUT,DELETE等等。 – Nanne

+2

即使'

>',誰阻止了我從粘貼我在表單中看到的URL複製到我的瀏覽器中,它將執行對該資源的GET請求?如果我這樣做,那意味着我做了你不允許的事情。這就是爲什麼使用該片段的原因。 –

回答

3

如果用戶來自以前的表單,那麼請求方法確實是POST。但是任何人都可以向服務器發出請求,例如通過CURL或自定義程序。沒有阻止人們對您的網頁進行隨機請求。

因此,您無法確定服務器上的請求方法確實是POST並且存在所有數據。

在另一個上下文中,它可以用來檢查表單是否已經被提交。例如:

<?php if($_SERVER['REQUEST_METHOD'] == 'POST') { ?> <!-- The server has recieved something via POST! --> 
    Thank you for submitting the form! 
<?php } else { ?> <!-- No postdata, lets show the form! --> 
    <form method='POST'> <!-- By setting the method we ask that the client does a post request. --> 
     <input type='submit' /> 
    </form> 
<?php } ?> 
+1

非常感謝。非常好的答案,這讓我很清楚。 –

0

有兩種方法可以從客戶端發送表單到服務器:GETPOST。它們在RFC 2616 (HTTP)中定義,但您可以直接看到的差異是GET顯示在URL中,而POST不顯示。

請記住,這僅用於客戶端的瀏覽器決定將內容發送到服務器的方式。

關於$_SERVER['REQUEST_METHOD']

的請求方法來訪問頁面;即'GET','HEAD','POST','PUT'。

注意:如果請求方法是HEAD,則PHP腳本在發送標頭之後終止(這意味着在產生沒有輸出緩衝的任何輸出之後)。

原因之一,您可能需要使用

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

可能是來檢查的形式提交。但請記住:人們可以發送POST請求,而無需實際使用您的表單!所以你必須檢查其他數據。

+0

你的答案並不正確,但這絕對是誤導。可以使用不同於POST和GET的動詞。此外,您可以輕鬆地**查看發佈的信息,不同之處在於您必須點擊F12,才能進入網絡選項卡>檢查好的新型瀏覽器在發送數據方面的好處。實際上,差異在於動作的目的取決於所使用的動詞。這是開發人員編寫的代碼。 –

+0

確定您可以使用不同的HTTP方法。但我不認爲這對他很重要。據我所知,你只能告訴客戶端使用GET或POST(至少我從未在HTML中看到過不同的東西)。 –

+0

如果他真的想知道,我發佈了相關規範的鏈接。在那裏他會找到所有的HTTP方法。 –

相關問題