get與post的一些特殊情況,getpost特殊情況
最近在做一些有關檔案上傳等的工作,途中遇到了以下問題:
將表單以post方式提交給一個有參數的url(如:res.php?param=aaa),這樣的得到的結果將會是什麼呢?
下面就從幾個例子將有關get與post的相關內容進行測試,首先看一下最簡單的
<span style="font-size:18px;"><html><body><?phpecho $_GET ['param'];?><form action="get_post_test.php?param=aaa" method="get"><input type="text" name="param" value="bbb" /> <input type="submit" value="submit"></form></body></html></span>
以get的方式提交到已經有這個參數的url,結果是對應的value進行了覆蓋,獲得了的param的為bbb.
如果url裡面參數,但是和表單裡面的name不同呢?看下面測試例子
<span style="font-size:18px;"><html><body><?phpecho $_GET ['param1'];echo "<br>";echo $_GET ['param2'];?><form action="get_post_test.php?param1=aaa" method="get"><input type="text" name="param2" value="bbb" /> <input type="submit" value="submit"></form></body></html></span>
這個的結果是正確的得到了param2的值,但是沒有得到param1的值,說明以get方式提交均將原先url的參數去除了.
下面再看一下post方式提交的情況
首先看一下name值相同時的情況
<span style="font-size:18px;"><html><body><?phpecho "get=" . $_GET ['param'];echo "<br>";echo "post=" . $_POST ['param'];?><form action="get_post_test.php?param=aaa" method="post"><input type="text" name="param" value="bbb" /> <input type="submit"value="submit"></form></body></html></span>
這種情況下,輸出的結果是get方式獲得的是aaa,post方式擷取的是bbb,說明此種情況下互不影響.get與post單獨隔離開了.
下面看一下使用post方式擷取url後面的參數如何
<span style="font-size:18px;"><html><body><?phpecho "get=" . $_GET ['param2'];echo "<br>";echo "post=" . $_POST ['param1'];?><form action="get_post_test.php?param1=aaa" method="post"><input type="text" name="param2" value="bbb" /> <input type="submit" value="submit"></form></body></html></span>
此種情況下,擷取的參數全部為空白,所以可以說php中get與post擷取的參數是相互隔離的.
注意:傳遞post參數的時候可以附帶將get的參數一塊上傳
不過今天使用java進行檔案上傳的時候,可以正確的擷取所有資料,即servlet裡面可以使用request擷取不論是post的表單資料或者是url後的get資料.畢竟servlet中擷取參數的方法是一樣的.
get與post方式提交的主要不同,分別說出它們的一種使用方式
get地址欄裡能直接看到提交的參數,並且大小是有限制的,不同的瀏覽器限制的位元組不同
post不限制大小,地址欄看不到
查詢的可以用get
其他動作盡量用post
get與post的提交方式有什不同的地方
樓上說的沒錯,我再補充一點
就是架構技術中,使用POST方式提交可以和設定檔實現安全傳遞
而用GET的話可能會丟失傳遞的資料