亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

[PHP]不同操作系統下PHP接收POST數據問題

系統 2646 0

?

不同操作系統下

?

PHP 接收 HTTP POST 數據問題

?

文檔版本

版本

創建時間

創建人

備注

1.0.0606.1

2003-6-6

??????????

第一稿

?

?

?

?

Implementation Scope

本文檔將說明 PHP 頁面接收 HTTP 組件 POST 的數據問題。一般來說, POST 過來的二進制數據流,只需要 PHP $HTTP_RAW_POST_DATA 就可以接收。但是,我們遇到的情況卻不是這樣。

?

繼續閱讀之前,我們假設您熟悉以下知識:

n ???????? PHP

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

n ???????? HTTP POST

?

現象

我們遇到了這么一個問題:

我從 Windows 2000 上,利用 MSXML2.ServerXMLHTTP 接口向 Linux Apche 下的 PHP 頁面 POST 二進制數據流。

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

?

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

為什么二者有這種區別呢?

環境信息

發起 HTTP POST請求方·系統環境

Windows XP Professional(Service Pack 1)

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

調用 ServerXMLHTTP 的代碼是:

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

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

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

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

?????????????????????????????????????????????????????????????? VARIANT_FALSE, ? // 同步發送

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

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

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

?

正確接收 POST請求的PHP for MS Windows·系統環境

$HTTP_RAW_POST_DATA 正常接收了數據的 PHP for Windows 安裝信息:

PHP Version 4.2.2

System

Windows NT 5.1 build 2600

Server API

CGI

關于使用這個全局變量的相關設置:

Directive

Local Value

Master Value

always_populate_raw_post_data

0

0

?

無法接收 POST請求的PHP for Linux·系統環境

無法用 $HTTP_RAW_POST_DATA 接收 POST 數據的 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

關于使用這個全局變量的相關設置:

Directive

Local Value

Master Value

always_populate_raw_post_data

On

On

?

?

更多信息

照理說,只要 php.ini 中定義了

; Always populate the $HTTP_RAW_POST_DATA variable.

always_populate_raw_post_data = On

就完全可以用 $HTTP_RAW_POST_DATA 變量來接收數據。

起碼 $_POST 變量是可以測算出 POST 到頁面的數據大小的。

?

我確實看到有幾個人試圖報告“ Empty $HTTP_RAW_POST_DATA ”是一個 PHP Bug ,但是 PHP 維護人員說肯定不是。

解決步驟

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

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

設置頭信息的代碼如下:

hr = pIXMLHttpRequest->setRequestHeader(

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

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

?

這樣做的話, PHP 4.2.2 for Windows PHP 4.3.2RC3 for Linux 都可以用 $HTTP_RAW_POST_DATA 接收,沒有問題。

?

總結:

如果你的 $HTTP_RAW_POST_DATA 不在那兒了 ,你可以在調用 HTTP 組件發送 HTTP POST 請求時,指定 Content-Type file

?

Disclaimers

本文檔所包含的信息代表了在發布之日, zhengyun 對所討論問題的當前看法。本文檔不應理解為 zhengyun 一方的承諾, zhengyun 不保證所給信息在發布之日以后的準確性。

本文檔僅供參考。

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

?

Thank wyp;

Written by zhengyun (at) tomosoft.com

?

?



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


[PHP]不同操作系統下PHP接收POST數據問題


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产精品久久久久久亚洲伦理 | 欧美精品色视频 | jizzjizz欧美69巨大 | 狠狠色噜噜狠狠狠狠69 | 亚色视频在线观看 | 国产精品久久久久久久久免费 | 国产精品美女www爽爽爽视频 | 日韩高清一区二区三区不卡 | 国内精品日本久久久久影院 | 伊人婷婷色 | 欧美日韩北条麻妃一区二区 | 精品国产系列 | 久久久国产精品四虎 | 色综合一区二区三区 | 99久久精品国产综合一区 | 亚洲婷婷在线视频 | 亚洲国产欧美国产第一区二区三区 | 色综合图区 | 欧美成人精品欧美一级乱黄 | 狠狠色噜噜狠狠狠狠97老肥女 | 欧美在线免费视频 | 中文字幕免费在线观看 | 天天干免费视频 | 国产欧美综合一区二区 | 91青草久久久久久清纯 | 欧美一区色| 99视频精品全部免费观看 | 久久99国产精品久久欧美 | 欧美猛妇色xxxxxbbbb | 精品视频在线免费播放 | 高h女| 欧美日韩网站 | 婷婷在线观看网站 | 在线播放性xxx欧美 在线播放亚洲 | 久久青草免费线观最新 | 色网站在线播放 | 天天操夜 | 亚洲欧美日韩中文v在线 | 神马九九| 成人性a激情免费视频 | 日韩中文字幕精品视频在线 |