1、get是從服務器上獲取數據,post則是向服務器傳送數據;
2、get將表單中數據的按照variable=value的 形式,添加到action所指向的url后面,并且兩者使用“?”連接,而各個變量之間使用“&”連接,post是將表單中的數據放在form的 數據體中,按照變量和值相對應的方式,傳遞到action所指向url;
所以從上述也可以得到另外兩個結論:
1、get傳送的數據量較小,不能大于2kb,這主要是因為受url長度限制。post傳送的數據量較大,所以在上傳文件只能使用post。一般被默認為不受限制。但理論上,iis4中最大量為80kb,iis5中為100kb;
2、get安全性非常低(因為用戶可以通過url看到),post安全性較高(其所有操作對用戶來說都是不可見的)。但是執行效率卻比post方法好;
3、get限制form表單的數據集的值必須為ascii字符;而post支持整個iso10646字符集;cleaning cloth
4、get是form的默認方法;
5、get方式提交來的數據在服務器端用request.querystring()來獲取,用post方式提交的數據用request.form()來獲取(這一點不是很明確);
建議:
1、如果是包含機密信息的話,建議用post數據提交方式;
2、在做數據查詢時,建議用get方式;而在做數據添加、修改或刪除時,建議用post方式;
get實例
內置的$ _get函數是用來收集從表單發送一個method="get"的值,信息是一個用get方法的形式發送的.用戶可見的(它會在瀏覽器的地址欄顯示),并已對信息發送數量限制。
舉個例子:
- <form action="test.php" method="get">
- name: <input type="text" name="username" />
- age: <input type="text" name="age" />
- <input type="submit" value="submit" />
- </form>
當用戶點擊“提交”按鈕,發送到服務器的url可能看起來像這樣:
http: //localhost/demo/test.php?username=lily&age=28
在"test.php"文件,現在可以使用$ _get這個函數來收集表單數據(表單字段的名稱將自動在$ _get數組的鍵):
那何時使用 method="get" 呢?
當使用 method="get" 在html表單,所有的變量名和值顯示在url中,注意:這個方法不應該被使用在密碼或其他敏感信息,但是由于變量在顯示網址,是有可能的書簽頁面,這可以在某些情況下有用,get方法是不適合非常大的變量值,它不應該使用超過2000個字符的值
$_post實例
內置在$ _post功能是用來收集在一個表單 method="post" 值,使用post方法的形式發送的信息用戶是看不見的,并已對信息發送量沒有限制。但是,對于post方法有一個8 mb max size,默認情況下,可通過設置在php.ini文件中的post_max_size更改.
舉個例子:
- <form action="welcome.php" method="post">
- name: <input type="text" name="username" />
- age: <input type="text" name="age" />
- <input type="submit" value="submit" />
- </form>
當用戶點擊“提交”按鈕,發送到服務器的url可能看起來像這樣:
http: //localhost/demo/test.php
在"test.php"文件,現在可以使用了$ _post功能,收集表單數據,表單字段的名稱將自動在$ _post數組的鍵:
welcome <?php echo $_post["username"]; ?>!<br />
you are <?php echo $_post["age"]; ?> years old.
那何時使用 method="post" 呢?
使用post方法的形式發送的信息用戶是看不見的,并已對信息發送量沒有限制,但是由于變量沒有在url中顯示,這是不可能的書簽的頁面.
php的$ _request的作用
php的內置函數包含在$ _request中的有兩種形式 $ _get,$ _post和$ _cookie,$ _request函數,可用于收集get和post方法發送表單數據.
新聞熱點
疑難解答