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