php中$_REQUEST、 $_GET、 $_POST、 $_COOKIE 的關系和區別


看到REQUEST可以通吃GET 、POST 、COOKIE 后 感覺這個$_REQUEST太強大了
是不是其他的幾個超級變量就沒有用了,下面對他們整體做個比較:

 

1.安全性 post>get

 

2.數據傳輸大小 post>get(get最大2000字節)

 

3.保存到收藏夾 get比較方便.

 

4.權限大小

首先權限大小跟php.ini文件有關

; This directive determines which super global data (G,P & C) should be
; registered into the super global array REQUEST. If so, it also determines
; the order in which that data is registered. The values for this directive
; are specified in the same manner as the variables_order directive,
; EXCEPT one. Leaving this value empty will cause PHP to use the value set
; in the variables_order directive. It does not mean it will leave the super
; globals array REQUEST empty.
; Default Value: None
; Development Value: "GP"
; Production Value: "GP"
; http://php.net/request-order
request_order = "GP"

  

這里的意思是:

; 是否將EGPCS變量注冊成為全局變量.
; 如果你不希望由於用戶數據而導致你腳本的全局變量變得凌亂,你需要關閉此選項
; 這個一般隨着 track_vars 打開 - 在這種情況下你能夠通過$HTTP_*_VARS[]存取所有的GPC變量.

這些超全局數據包括G(GET),P(POST),C(COOKIE),E(ENV),S(SERVER)。這條指令同樣指定了這些數據的注冊順序,換句話說GP和PG是不一樣的。注冊的順序是從左至右,即右側的值會覆蓋左側的。比如,當設置為GPC時,COOKIE > POST > GET,依次覆蓋。如果這個項被設置為空,php將會使用指令variables_order的值來指定。

 

在$_POST['name'] = 'post', $_GET ['name'] = 'get' ,setcookie('name', 'cookie', time()+3600);//先把COOKIE種上,名字為name,值為cookie。然后刷新。(COOKIE要刷新才生效)

上面三個不同的全局變量中鍵名都是相同的

但是print_r($_REQUEST);  后查看結果 'cookie'。

結論:COOKIE的優先級最高。下來POST,最后才是GET

權限大小比較:$_COOKIE > $_POST > $_GET

 

另外,判斷是post還是get請求的頁面,最好使用:$_SERVER['REQUEST_METHOD']

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM