2013-06-05 47 views
1

我試過搜索,但沒有看到這個問題的答案。下面是一個簡單的表格:當表單發佈時,URL中的GET變量是否被放在URL中?

<form action="" method="post"> 
<input type="hidden" name="test" value="1"> 
<input type="submit"> 
</form> 

我把代碼放到test.html並瀏覽到:

/test.html?test=test 

提交表格後,變量test仍然在URL中。我認爲提交的表單會消除GET參數,但它沒有。

是否所有瀏覽器都顯示此行爲,或者這是FireFox特有的?

+2

僅供參考,您可以同時發送POST和GET請求。 – HamZa

+2

它因爲你有一個空白的動作,這是一個壞主意。當操作未設置時,瀏覽器使用'當前'頁面。 – 2013-06-05 20:53:12

+0

@HamZa沒有你不能,但你可以有一個查詢字符串在url中的POST請求 – Musa

回答

3

「POST」 和 「GET」 參數是在PHP相當名不副實。無論請求的類型如何,URL都可以有查詢參數。 POST請求可以具有請求主體數據。 URL查詢參數以$_GET以PHP結尾,POST請求的URL編碼主體數據爲$_POST。在PHP之外的「$_GET」術語中,確實沒有像「GET參數」這樣的東西。

無指定動作的表單提交至當前網址,包括任何網址查詢參數

希望現在更有意義。

3

method="get"的表單將覆蓋任何現有的GET參數。但是,method="post"的表單將保留它們。

如果你想手動刪除它們,嘗試action="<?=$_SERVER['PHP_SELF']?>"(或PHP 5.3及以下:action="<?php echo $_SERVER['PHP_SELF'] ?>"

+0

在PHP5.4 +中,無論短標籤設置是否正確,都支持短回顯標籤? –

+0

@FabrícioMatté是的,這是正確的。 –