php中的$_REQUEST、$_GET、$_POST

php中的$_REQUEST、$_GET、$_POST的聯繫和區別

1. $_REQUEST 

php中$_REQUEST可以獲取以POST方法和GET方法提交的數據,但是速度比較慢 


2. $_GET 

用來獲取由瀏覽器通過GET方法提交的數據。GET方法是通過把參數數據加在提交表單的action屬性所指的URL中,值和表單內每個字段一一對應,然後在URL中可以看到,但是有如下缺點: 
1. 安全性不好,在URL中可以看得到 
2. 傳送數據量較小,不能大於2KB


3. $_POST 

用來獲取由瀏覽器通過POST方法提交的數據。POST方法他是通過HTTP POST機制,將表單的各個字段放置在HTTP HEADER內一起傳送到action屬性所指的URL地址中,用戶看不到這個過程。他提交的大小一般來說不受限制,但是具體根據服務器的不同,還是略有不同。相對於_GET方式安全性略高 


4. $_REQUEST、$_POST、$_GET 的區別和聯繫 

$_REQUEST["參數"]複用$_POST["參數"] $_GET["參數"]的功能,但是$_REQUEST["參數"]比較慢。通過post和get方法提交的所有數據都可以通過$_REQUEST數組["參數"]獲得


php獲取POST數據的幾種方法

方法1、最常見的方法是:$_POST['fieldname'];
說明:只能接收Content-Type: application/x-www-form-urlencoded提交的數據
解釋:也就是表單POST過來的數據


方法2、file_get_contents("php://input");
說明:允許讀取 POST 的原始數據(http的body數據)。和 $HTTP_RAW_POST_DATA 比起來,它給內存帶來的壓力較小,並且不需要任何特殊的 php.ini 設置。php://input 不能用於 enctype="multipart/form-data"。
解釋:對於未指定 Content-Type 的POST數據,則可以使用file_get_contents(“php://input”);來獲取原始數據。事實上,用PHP接收POST的任何數據都可以使用本方法。而不用考慮Content-Type,包括二進制文件流也可以。所以用方法二是最保險的方法


方法3、$GLOBALS['HTTP_RAW_POST_DATA'];

說明:總是產生 $HTTP_RAW_POST_DATA  變量包含有原始的 POST 數據。此變量僅在碰到未識別 MIME 類型的數據時產生。$HTTP_RAW_POST_DATA  對於 enctype="multipart/form-data"  表單數據不可用。如果post過來的數據不是PHP能夠識別的,可以用 $GLOBALS['HTTP_RAW_POST_DATA']來接收,比如 text/xml 或者 soap 等等
解釋:$GLOBALS['HTTP_RAW_POST_DATA']存放的是POST過來的原始數據。$_POST或$_REQUEST存放的是 PHP以key=>value的形式格式化以後的數據。 但$GLOBALS['HTTP_RAW_POST_DATA']中是否保存POST過來的數據取決於centent-Type的設置,即POST數據時 必須顯式示指明Content-Type: application/x-www-form-urlencoded,POST的數據纔會存放到 $GLOBALS['HTTP_RAW_POST_DATA']中

轉自:http://www.jb51.net/article/61690.htm

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