PHP中post與get的區別

1、Get 方法通過 URL 請求來傳遞用戶的數據,將表單內各字段名稱與其內容,以成對的字符串連接,置於 action 屬性所指程序的 url 後,如http://www.domain.com/test.asp?name=51js&password=51js,數據都會直接顯示在 url 上,就像用戶點擊一個鏈接一樣;Post 方法通過 HTTP post 機制,將表單內各字段名稱與其內容放置在 HTML 表頭(header)內一起傳送給服務器端交由 action 屬性能所指的程序處理,該程序會通過標準輸入(stdin)方式,將表單的數據讀出並加以處理


2、 Get 方式需要使用 Request.QueryString 來取得變量的值;而 Post 方式通過 Request.Form 來訪問提交的內容


3、Get 方式傳輸的數據量非常小,一般限制在 2 KB 左右,但是執行效率卻比 Post 方法好;而 Post 方式傳遞的數據量相對較大,它是等待服務器來讀取數據,不過也有字節限制,這是爲了避免對服務器用大量數據進行惡意攻擊,根據微軟方面的說法,微軟對用 Request.Form() 可接收的最大數據有限制,IIS 4 中爲 80 KB 字節,IIS 5 中爲 100 KB 字節

建議:除非你肯定你提交的數據可以一次性提交,否則請儘量用 Post 方法


4、Get 方式提交數據,會帶來安全問題,比如一個登陸頁面,通過 Get 方式提交數據時,用戶名和密碼將出現在 URL 上,如果頁面可以被緩存或者其他人可以訪問客戶這臺機器,就可以從歷史記錄獲得該用戶的帳號和密碼,所以表單提交建議使用 Post 方法;Post 方法提交的表單頁面常見的問題是,該頁面如果刷新的時候,會彈出一個對話框

建議:出於安全性考慮,建議最好使用 Post 提交數據
***********************************
在B/S應用程序中,前臺與後臺的數據交互,都是通過HTML中Form表單完成的。Form提供了兩種數據傳輸的方式——get和post。雖然它們都是數據的提交方式,但是在實際傳輸時確有很大的不同,並且可能會對數據產生嚴重的影響。雖然爲了方便的得到變量值,Web容器已經屏蔽了二者的一些差異,但是瞭解二者的差異在以後的編程也會很有幫助的。
Form中的get和post方法,在數據傳輸過程中分別對應了HTTP協議中的GET和POST方法。二者主要區別如下:
1、Get是用來從服務器上獲得數據,而Post是用來向服務器上傳遞數據。
2、Get將表單中數據的按照variable=value的形式,添加到action所指向的URL後面,並且兩者使用“?”連接,而各個變量之間使用“&”連接;Post是將表單中的數據放在form的數據體中,按照變量和值相對應的方式,傳遞到action所指向URL。
3、Get是不安全的,因爲在傳輸過程,數據被放在請求的URL中,而如今現有的很多服務器、代理服務器或者用戶代理都會將請求URL記錄到日誌文件中,然後放在某個地方,這樣就可能會有一些隱私的信息被第三方看到。另外,用戶也可以在瀏覽器上直接看到提交的數據,一些系統內部消息將會一同顯示在用戶面前。Post的所有操作對用戶來說都是不可見的。
4、Get傳輸的數據量小,這主要是因爲受URL長度限制;而Post可以傳輸大量的數據,所以在上傳文件只能使用Post(當然還有一個原因,將在後面的提到)。
5、Get限制Form表單的數據集的值必須爲ASCII字符;而Post支持整個ISO10646字符集。
6、Get是Form的默認方法。
*.Post傳輸數據時,不需要在URL中顯示出來,而Get方法要在URL中顯示。
*.Post傳輸的數據量大,可以達到2M,而Get方法由於受到URL長度的限制,只能傳遞大約1024字節.
*.Post顧名思義,就是爲了將數據傳送到服務器段,Get就是爲了從服務器段取得數據.而Get之所以也能傳送數據,只是用來設計告訴服務器,你到底需要什麼樣的數據.Post的信息作爲http請求的內容,而Get是在Http頭部傳輸的。
網頁表單當中的get方式和post方式的區別
1、get方式可傳遞的數據量有限,大約是2K左右,而post在iis5當中則達到100k,一般人們可以默認post是無限制的;
2、get方式在提交帳號密碼等表單時不如post方式安全。在get提交表單以後瀏覽器的url會將你提交的表單參數全部顯示在地址欄當中,而且可以通過機器的緩存來直接查看到各項參數;而post方式則不會;
3、get方式在後臺處理頁面用Request.QueryString接收各個參數;而post則用Request.Form獲取;
4、get方式會忽略<form action="a.asp?a=a"裏邊的"a=a"這個參數;而post方式則不會

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/zyyr365/archive/2009/04/07/4054246.aspx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章