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



皖公網(wǎng)安備 34010202600669



