get與post的一些特殊情況,getpost特殊情況

來源:互聯網
上載者:User

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的話可能會丟失傳遞的資料
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.