日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

[PHP]不同操作系統(tǒng)下PHP接收POST數(shù)據(jù)問(wèn)題

系統(tǒng) 2675 0

?

不同操作系統(tǒng)下

?

PHP 接收 HTTP POST 數(shù)據(jù)問(wèn)題

?

文檔版本

版本

創(chuàng)建時(shí)間

創(chuàng)建人

備注

1.0.0606.1

2003-6-6

??????????

第一稿

?

?

?

?

Implementation Scope

本文檔將說(shuō)明 PHP 頁(yè)面接收 HTTP 組件 POST 的數(shù)據(jù)問(wèn)題。一般來(lái)說(shuō), POST 過(guò)來(lái)的二進(jìn)制數(shù)據(jù)流,只需要 PHP $HTTP_RAW_POST_DATA 就可以接收。但是,我們遇到的情況卻不是這樣。

?

繼續(xù)閱讀之前,我們假設(shè)您熟悉以下知識(shí):

n ???????? PHP

n ???????? MSXML2.ServerXMLHTTP

n ???????? HTTP POST

?

現(xiàn)象

我們遇到了這么一個(gè)問(wèn)題:

我從 Windows 2000 上,利用 MSXML2.ServerXMLHTTP 接口向 Linux Apche 下的 PHP 頁(yè)面 POST 二進(jìn)制數(shù)據(jù)流。

PHP 頁(yè)面的 $HTTP_RAW_POST_DATA 變量為空,得不到數(shù)據(jù),而且 sizeof($_POST) 的值也是 0

?

但是,如果我同樣向一個(gè) Windows 2000 IIS 下的 PHP 頁(yè)面 POST 數(shù)據(jù),卻可以用 $HTTP_RAW_POST_DATA 接收到正常數(shù)據(jù)。

為什么二者有這種區(qū)別呢?

環(huán)境信息

發(fā)起 HTTP POST請(qǐng)求方·系統(tǒng)環(huán)境

Windows XP Professional(Service Pack 1)

MSXML3.Dll(SP3 / 版本號(hào): 8.30.9926.0)

調(diào)用 ServerXMLHTTP 的代碼是:

?? ???? MSXML2::IServerXMLHTTPRequestPtr pIXMLHttpRequest = NULL;

????????????? HRESULT hr = pIXMLHttpRequest.CreateInstance("MSXML2.ServerXMLHTTP");

??????? hr = pIXMLHttpRequest->open(L"POST",

?????????????????????????????????????????????????????????????? bstrPHPURL,

?????????????????????????????????????????????????????????????? VARIANT_FALSE, ? // 同步發(fā)送

?????????????????????????????????????????????????????????????? vtMissing,

?????????????????????????????????????????????????????????????? vtMissing);

??????? hr = pIXMLHttpRequest->send(varData);

?

正確接收 POST請(qǐng)求的PHP for MS Windows·系統(tǒng)環(huán)境

$HTTP_RAW_POST_DATA 正常接收了數(shù)據(jù)的 PHP for Windows 安裝信息:

PHP Version 4.2.2

System

Windows NT 5.1 build 2600

Server API

CGI

關(guān)于使用這個(gè)全局變量的相關(guān)設(shè)置:

Directive

Local Value

Master Value

always_populate_raw_post_data

0

0

?

無(wú)法接收 POST請(qǐng)求的PHP for Linux·系統(tǒng)環(huán)境

無(wú)法用 $HTTP_RAW_POST_DATA 接收 POST 數(shù)據(jù)的 PHP for Linux 安裝信息:

PHP Version 4.3.2RC3

System

Linux atm2 2.4.18-1 #1 Wed May 29 10:45:23 CST 2002 i686

Server API

Apache

Registered PHP Streams

php, http, ftp

關(guān)于使用這個(gè)全局變量的相關(guān)設(shè)置:

Directive

Local Value

Master Value

always_populate_raw_post_data

On

On

?

?

更多信息

照理說(shuō),只要 php.ini 中定義了

; Always populate the $HTTP_RAW_POST_DATA variable.

always_populate_raw_post_data = On

就完全可以用 $HTTP_RAW_POST_DATA 變量來(lái)接收數(shù)據(jù)。

起碼 $_POST 變量是可以測(cè)算出 POST 到頁(yè)面的數(shù)據(jù)大小的。

?

我確實(shí)看到有幾個(gè)人試圖報(bào)告“ Empty $HTTP_RAW_POST_DATA ”是一個(gè) PHP Bug ,但是 PHP 維護(hù)人員說(shuō)肯定不是。

解決步驟

不知道 Windows 下的 PHP 4.2.2 怎么一直可以接收。

但是如果我顯式聲明 Content-Type file 的話(huà), Linux 下的 PHP 4.3.2RC3 就可以正常接收 POST 數(shù)據(jù)了。

設(shè)置頭信息的代碼如下:

hr = pIXMLHttpRequest->setRequestHeader(

?????????????????????????????????????????????????????????????? _bstr_t("Content-Type"),

?????????????????????????????????????????????????????????????? _bstr_t("file"));

?

這樣做的話(huà), PHP 4.2.2 for Windows PHP 4.3.2RC3 for Linux 都可以用 $HTTP_RAW_POST_DATA 接收,沒(méi)有問(wèn)題。

?

總結(jié):

如果你的 $HTTP_RAW_POST_DATA 不在那兒了 ,你可以在調(diào)用 HTTP 組件發(fā)送 HTTP POST 請(qǐng)求時(shí),指定 Content-Type file

?

Disclaimers

本文檔所包含的信息代表了在發(fā)布之日, zhengyun 對(duì)所討論問(wèn)題的當(dāng)前看法。本文檔不應(yīng)理解為 zhengyun 一方的承諾, zhengyun 不保證所給信息在發(fā)布之日以后的準(zhǔn)確性。

本文檔僅供參考。

用戶(hù)必須遵守所有適用的版權(quán)法。在不對(duì)版權(quán)法所規(guī)定的權(quán)利加以限制的情況下,如未得到 zhengyun CSDN.Net 明確的書(shū)面許可,不得出于任何目的、以任何形式或手段(電子的、機(jī)械的、影印、錄制等等)復(fù)制、傳播本文的任何部分,也不得將其存儲(chǔ)或引入到檢索系統(tǒng)中。

?

Thank wyp;

Written by zhengyun (at) tomosoft.com

?

?



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=12720


[PHP]不同操作系統(tǒng)下PHP接收POST數(shù)據(jù)問(wèn)題


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 通城县| 新建县| 嘉义县| 图片| 灯塔市| 石棉县| 登封市| 黎城县| 深州市| 陕西省| 岑巩县| 镇沅| 德格县| 巴林左旗| 金堂县| 方城县| 察隅县| 南安市| 保康县| 南江县| 绥阳县| 辽阳县| 平远县| 梁山县| 且末县| 武夷山市| 武汉市| 淳化县| 万全县| 盖州市| 鄂托克前旗| 平潭县| 七台河市| 突泉县| 靖州| 鄂州市| 武川县| 申扎县| 民县| 阿克| 肥城市|