瀏覽器的請求方式主要是get和post,在這里主要講下獲取post參數(shù)的幾種常用方法。
最常見的方法是:
$_POST['paraname'];
$_POST是個數(shù)組,是post方法發(fā)送的變量名和變量值,
存放的是 PHP以key=>value的形式格式化以后的數(shù)據(jù)。
這是在進行web開法時最常用的方式,但此種方法有局限性,
只能接收Content-Type: application/x-www-form-urlencoded提交的數(shù)據(jù),
我們必須通過一個表單(真實或模擬)來進行提交。
但是此種方式在進行接口(如給APP提供接口)開發(fā)時,就不是很方便了。
這個時候,使用:
file_get_contents(“php://input”);將會非常的便捷。
用PHP接收POST的任何數(shù)據(jù)都可以使用本方法。而不用考慮Content-Type。
注意:
也可以使用$HTTP_RAW_POST_DATA 來獲取數(shù)據(jù),
但是使用file_get_contents(“php://input”)給內存帶來的壓力較小,并且不需要任何特殊的 php.ini 設置。
但是不能用于 enctype=“multipart/form-data”。
這樣的情況下$HTTP_RAW_POST_DATA默認沒有填充,
比激活
always_populate_raw_post_data
潛在需要更少的內存。
但$GLOBALS['HTTP_RAW_POST_DATA']中
是否保存POST過來的數(shù)據(jù)取決于centent-Type的設置,
即POST數(shù)據(jù)時 必須顯式示指明
Content-Type: application/x-www-form-urlencoded,
POST的數(shù)據(jù)才會存放到 $GLOBALS['HTTP_RAW_POST_DATA']中。
php://input是個可以訪問請求的原始數(shù)據(jù)的只讀流。
在微信中傳遞的是xml格式的數(shù)據(jù)以發(fā)送xml格式數(shù)據(jù)為例:
//接收POST數(shù)據(jù)
$data = file_get_contents(“php://input”);
//提取POST數(shù)據(jù)為simplexml對象
$xml = simplexml_load_string($data);
var_dump($xml);
這樣一來,解析數(shù)據(jù)將會變得簡潔,方便。



皖公網安備 34010202600669



