2013年4月5日 星期五

[PHP]GET與POST的差別?

之前在學習PHP的時候常常會使用到 Form 這個表單,然而傳送資料的方法也是常常使用POST跟GET的方法來傳遞。

小弟之前只會使用,但不知道他的傳送方式是怎麼一回事?所以找了一下資料來加強我的概念。以下先宣告一段簡單的Form的標籤


你的內容...

除了POST和GET的方法,還有其他的方式傳遞嗎?(下表是HTTP協定的八種方法)


What’s HTTP Method?
HTTP1.1的版本中定義了八種方法,如下:
OPTIONS
GET
HEAD
POST
PUT
DELETE
TRACE
CONNECT


在PHP要取得資料的方法是$_POST、$_GET,突然在我的腦海裡浮現一個$_REQUEST的文字,原來這個$_REQUEST的功能是擁有($_POST、$_GET)的功能,在PHP5.2之前也包含了$_COOKIE 和 $_SERVER,但基於安全性考量,並不適合用來實作。像其他程式語言跟$_REQUEST一樣的功能,如:JAVA使用getParameter()、ASP使用Request.Form()...等等。


解釋GET和POST的分別:

如果 HTTP 代表現在我們現實生活中寄信的機制:
信封的撰寫格式就是 HTTP
信封外的內容稱為 http-header
信封內的書信稱為 message-body
HTTP Method 就是你要告訴郵差的寄信規則


所以說GET是把資料放在header進行傳送,所以在網址列上看到"http://www.AAA.com/?password=1234",browser會把表單內容轉換成Query String放在URL進行連線,但這一種方式,並不適合傳送隱密性的資料。因為資料傳送突中是直接顯示在網址列上,所以是直接性的看到。


而POST是放在body進行傳送,也就是封包內,在傳送中也會使用multi-part編碼,將檔案與表單內容一起放在body裡來傳遞,乍看起來會比GET安全一些,但也不是保證非常安全。




沒有留言:

張貼留言