通常情況下用戶使用瀏覽器網(wǎng)頁(yè)表單向服務(wù)器post提交數(shù)據(jù),我們使用PHP的$_POST接收用戶POST到服務(wù)器的數(shù)據(jù),并進(jìn)行適當(dāng)?shù)奶幚怼5行┣闆r下,如用戶使用客戶端軟件向服務(wù)端php程序發(fā)送post數(shù)據(jù),而不能用$_POST來(lái)識(shí)別,那又該如何處理呢?

創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比獨(dú)山子網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式獨(dú)山子網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋獨(dú)山子地區(qū)。費(fèi)用合理售后完善,十余年實(shí)體公司更值得信賴。
我們介紹php接受post數(shù)據(jù)的三種方式:
1.$_POST方式接收數(shù)據(jù)
$_POST方式是通過(guò) HTTP POST 方法傳遞的變量組成的數(shù)組,是自動(dòng)全局變量。如使用$_POST[‘name’]就可以接收到網(wǎng)頁(yè)表單以及網(wǎng)頁(yè)異步方式post過(guò)來(lái)的數(shù)據(jù),
即$_POST只能接收文檔類型為Content-Type: application/x-www-form-urlencoded提交的數(shù)據(jù),也就是表單POST過(guò)來(lái)的數(shù)據(jù)。
2.$GLOBALS[‘HTTP_RAW_POST_DATA’]方式接收數(shù)據(jù)
但$GLOBALS[‘HTTP_RAW_POST_DATA’]中是否保存POST過(guò)來(lái)的數(shù)據(jù)取決于centent-Type的設(shè)置,只有在PHP在無(wú)法識(shí)別的Content-Type的情況下,才會(huì)將POST過(guò)來(lái)的數(shù)據(jù)原樣地填入變量$GLOBALS[‘HTTP_RAW_POST_DATA’]中,像Content-Type=application/x-www-form-urlencoded時(shí),該變量是空的。
另外,它同樣無(wú)法讀取Content-Type為multipart/form-data的POST數(shù)據(jù),也需要設(shè)置php.ini中的always_populate_raw_post_data值為On,PHP才會(huì)總把POST數(shù)據(jù)填入變量$http_raw_post_data。
3.php://input方式接收數(shù)據(jù)
如果訪問(wèn)原始 POST 數(shù)據(jù)的更好方法是 php://input。php://input 允許讀取 POST 的原始數(shù)據(jù)。和 $HTTP_RAW_POST_DATA 比起來(lái),它給內(nèi)存帶來(lái)的壓力較小,并且不需要任何特殊的php.ini設(shè)置,php://input不能用于 enctype=”multipart/form-data”。對(duì)于未指定 Content-Type 的POST數(shù)據(jù),則可以使用file_get_contents(“php://input”)來(lái)獲取原始數(shù)據(jù)。事實(shí)上,用PHP接收POST的任何數(shù)據(jù)都可以使用本方法。而不用考慮Content-Type,包括二進(jìn)制文件流也可以。php://input讀取不到$_GET數(shù)據(jù)。是因?yàn)?
php有個(gè)超全局變量可以滿足你的需求,$_SERVER是個(gè)很強(qiáng)大的超全局變量,$_SERVER[‘HTTP_REFERER’]這個(gè)可以獲取域名,$_SERVER["REMOTE_ADDR"]這個(gè)可以獲取ip
超鏈接方式調(diào)用的PHP文件,實(shí)際上就是GET方式調(diào)用,其參數(shù)使用超級(jí)全局?jǐn)?shù)組$_GET獲得,例如調(diào)用你的php的鏈接地址是:
abc.php?id=123
那么在abc.php文件里面,使用$_GET['id']就能獲得傳遞的參數(shù)id值,本例中為123。
方法1、最常見(jiàn)的方法是:$_post['fieldname'];
說(shuō)明:只能接收content-type:
application/x-www-form-urlencoded提交的數(shù)據(jù)
解釋:也就是表單post過(guò)來(lái)的數(shù)據(jù)
方法2、file_get_contents("php://input");
說(shuō)明:
允許讀取
post
的原始數(shù)據(jù)。
和
$http_raw_post_data
比起來(lái),它給內(nèi)存帶來(lái)的壓力較小,并且不需要任何特殊的
php.ini
設(shè)置。
php://input
不能用于
enctype="multipart/form-data"。
解釋:
對(duì)于未指定
content-type
的post數(shù)據(jù),則可以使用file_get_contents(“php://input”);來(lái)獲取原始數(shù)據(jù)。
事實(shí)上,用php接收post的任何數(shù)據(jù)都可以使用本方法。而不用考慮content-type,包括二進(jìn)制文件流也可以。
所以用方法二是最保險(xiǎn)的方法
方法3、$globals['http_raw_post_data'];
說(shuō)明:
總是產(chǎn)生
$http_raw_post_data
變量包含有原始的
post
數(shù)據(jù)。
此變量?jī)H在碰到未識(shí)別
mime
類型的數(shù)據(jù)時(shí)產(chǎn)生。
$http_raw_post_data
對(duì)于
enctype="multipart/form-data"
表單數(shù)據(jù)不可用
如果post過(guò)來(lái)的數(shù)據(jù)不是php能夠識(shí)別的,可以用
$globals['http_raw_post_data']來(lái)接收,
比如
text/xml
或者
soap
等等
解釋:
$globals['http_raw_post_data']存放的是post過(guò)來(lái)的原始數(shù)據(jù)。
$_post或$_request存放的是
php以key=value的形式格式化以后的數(shù)據(jù)。
但$globals['http_raw_post_data']中是否保存post過(guò)來(lái)的數(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
header("Content-type:text/html;charset=utf-8");
if($_POST){
$d = $_POST['data'];//這里獲取的直接就是數(shù)組了,不需要用到j(luò)son_decode
echo $d['doing'];
//print_r($d);
exit;
}
?
script src="js/jquery-1.7.2.min.js"/script
script type="text/javascript"
$(document).ready(function() {
$("#xx").click(function(){
var url = "test.php";
var str ="{'doing':'createvote','type':'type','num':'num','votetheme':'votetheme','creater':'loginname'}";//json格式字符串
var data = eval('('+str+')');//轉(zhuǎn)換成數(shù)組對(duì)象,不加這步,那么PHP獲取的是字符串。
$.post(url, {'data': data}, function(res) {//注意jquery的$.post的第2個(gè)參數(shù)必須是鍵值對(duì)形式
alert(res);
});
});
});
/script
input id="xx" type="button" value="點(diǎn)擊"
分享標(biāo)題:php獲取傳輸過(guò)來(lái)數(shù)據(jù),js傳輸數(shù)據(jù)到php
本文鏈接:http://chinadenli.net/article42/hsjdhc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、App開(kāi)發(fā)、定制網(wǎng)站、企業(yè)網(wǎng)站制作、全網(wǎng)營(yíng)銷推廣、網(wǎng)站維護(hù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)