天天看點

php get與post差別,PHP表單進行中GET與POST差別

PHP表單處理

form表單的送出主要有兩[文]種方式:get和post

GET方法接收的特點:所有[章]輸入的資料被加載到請求的U[來]RL位址後面,資料通過鍵/[自]值對的方法加載。

GET方法接收的特點:把數[紅]據和請求的URL位址放在一[色]起,浏覽的結果放在緩存區内[火]。由于GET放在URL後面[線]傳遞,是以傳遞的資料大小有[自]限。

執行個體:next.php?u[媒]ser=admin&amp[體];pwd=123456

資料傳遞到next.php[博]頁,?表示參數的開始,&a[客]mp;分隔不同的參數,+表[文]示空格符。在頁面next.[章]php中,用$_GET[][來]數組形式接收傳遞的資料。用[自]$_GET[user]接收[紅]到admin值,用$GET[色]['pwd'[火];]接收到資料123456[線].

使用POST方法,把表單數[自]據打包放入請求中,伺服器必[媒]須從輸入的檔案中讀出請求的[體]資訊,分析出資料的鍵值,提[博]取出資料。

用POST發送的資料單獨存[客]放在包中,不跟随URL位址[文],是以允許發送大量資料,但[章]是用戶端每次都會向伺服器發[來]送請求,不會存放在緩存區内[自]。可以使用$_POST[][紅]接收POST的資料。在UR[色]L中,不會顯示資料資訊。

表單的複選框控件name屬[火]性可以設定成一個名字後加[[線] ]表示是一個數組,送出後可[自]以接收得到相應的選中值。

也可以使用$_REQUES[媒]T[]接收傳遞的值,無論是[體]get方法還是post方法[博]傳遞的。雖然$_REQUE[客]ST[]具用$_POST[[文]] $_GET[]的功能,但是[章]$_REQUEST[]比較[來]慢。。

$_POST、$_GET的[自]差別和特點

1.         GET是從服務[紅]器上擷取資料,POST是向[色]伺服器傳送資料。

2.         GET是把參數[火]資料隊列加到送出表單的AC[線]TION屬性所指的URL中[自],值和表單内各個字段一一對[媒]應,在URL中可以看到。P[體]OST是通過HTTP POST機制,将表單内各個[博]字段與其内容放置在HTML[客] HEADER内一起傳送到A[文]CTION屬性所指的URL[章]位址。使用者看不到這個過程。[來]

3.         對于GET方式[自]送出表單資料,伺服器端用$[紅]_GET[‘name’]獲[色]取變量的值,對于POST方[火]式送出表單資料,伺服器端用[線]$_POST[‘name’[自]]擷取送出的資料,當然,兩[媒]者都可以通過$_REQUE[體]ST[‘name’]獲得表[博]單資料。對于REQUEST[客]方式送出表單資料,伺服器端[文]用$_REQUEST[‘n[章]ame’]擷取變量的值,但[來]這種方式很少用。

4.         GET傳送的數[自]據量較小,不能大于2KB。[紅]POST傳送的資料量較大,[色]一般被預設為不受限制。但理[火]論上,一般認為不能超過10[線]0KB。

5.         GET安全性非[自]常低,POST安全性較高。[媒]

6.         GET表單值可[體]以通過_GET擷取;但通過[博]action的url設定的[客]參數總是擷取不到的,&lt[文];form method="[章]get" action="[來]a.asp?b=b&quo[自]t;>跟是一[自]樣的,也就是說,在這種情況[媒]下,GET方式會忽略act[體]ion頁面後邊帶的參數清單[博]。POST表單值可以通過_[客]POST擷取;但通過act[文]ion的url參數設定的參[章]數則可以不能通過_POST[來]擷取到。action=te[自]st.php?id=1這種[紅]就是GET方式傳值,可以用[色]$_REQUEST和$_G[火]ET接受傳值,但不能用PO[線]ST方式擷取到值,即使表單[自]是POST方式送出。所在,[媒]在送出表單時,如果acti[體]on中同時有參數,最好隻能[博]通過POST表單方式,對于[客]表單内資料,直接通過POS[文]T擷取,對于action中[章]參數,童工GET擷取。

在做資料查詢時,建議用GE[來]T方式,而在做資料添加、修[自]改或删除時,建議用POST[紅]方式。

request是先讀取 get再讀post 的, 同時存在, 即覆寫掉前面的變量。

經典執行個體:

echo "get\n&q[色]uot;;

print_r($_GET[火]);

echo "post\n&[線]quot;;

print_r($_POS[自]T);

echo "request[媒]\n";

print_r($_REQ[體]UEST);

?>