溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

PHP中$GLOBALS['HTTP_RAW_POST_DATA']和$_POST的區(qū)別有哪些

發(fā)布時(shí)間:2021-09-03 09:28:24 來(lái)源:億速云 閱讀:128 作者:小新 欄目:開發(fā)技術(shù)

這篇文章將為大家詳細(xì)講解有關(guān)PHP中$GLOBALS['HTTP_RAW_POST_DATA']和$_POST的區(qū)別有哪些,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

具體如下:

$_POST:通過(guò) HTTP POST 方法傳遞的變量組成的數(shù)組。是自動(dòng)全局變量。
$GLOBALS['HTTP_RAW_POST_DATA'] :總是產(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ù)不可用。

也就是說(shuō)基本上$GLOBALS['HTTP_RAW_POST_DATA'] 和 $_POST是一樣的。
但是如果post過(guò)來(lái)的數(shù)據(jù)不是PHP能夠識(shí)別的,你可以用 $GLOBALS['HTTP_RAW_POST_DATA']來(lái)接收,比如 text/xml 或者 soap 等等。

補(bǔ)充說(shuō)明:PHP默認(rèn)識(shí)別的數(shù)據(jù)類型是application/x-www.form-urlencoded標(biāo)準(zhǔn)的數(shù)據(jù)類型。

這是手冊(cè)里寫的:

總是產(chǎn)生變量包含有原始的 POST 數(shù)據(jù)。否則,此變量?jī)H在碰到未識(shí)別 MIME 類型的數(shù)據(jù)時(shí)產(chǎn)生。不過(guò),訪問(wèn)原始 POST 數(shù)據(jù)的更好方法是 php://input。$HTTP_RAW_POST_DATA 對(duì)于 enctype="multipart/form-data" 表單數(shù)據(jù)不可用。

問(wèn)題: $HTTP_RAW_POST_DATA == $_POST 嗎?

照手冊(cè)所寫 ,答案應(yīng)該就為否。
假如不一樣的話,他們的區(qū)別是什么呢?

我知道答案了,如下:

The RAW / uninterpreted HTTP POst information can be accessed with:
$GLOBALS['HTTP_RAW_POST_DATA']
This is useful in cases where the post Content-Type is not something PHP understands (such as text/xml).

也就是說(shuō),基本上$GLOBALS['HTTP_RAW_POST_DATA'] 和 $_POST是一樣的。但是如果post過(guò)來(lái)的數(shù)據(jù)不是PHP能夠識(shí)別的,你可以用 $GLOBALS['HTTP_RAW_POST_DATA']來(lái)接收,比如 text/xml 或者 soap 等等。

PHP默認(rèn)識(shí)別的數(shù)據(jù)類型是application/x-www.form-urlencoded標(biāo)準(zhǔn)的數(shù)據(jù)類型

用Content-Type=text/xml 類型,提交一個(gè)xml文檔內(nèi)容給了php server,要怎么獲得這個(gè)POST數(shù)據(jù)。

The RAW / uninterpreted HTTP POST information can be accessed with: $GLOBALS['HTTP_RAW_POST_DATA'] This is useful in cases where the post Content-Type is not something PHP understands (such as text/xml).

由于PHP默認(rèn)只識(shí)別application/x-www.form-urlencoded標(biāo)準(zhǔn)的數(shù)據(jù)類型,因此,對(duì)型如text/xml的內(nèi)容無(wú)法解析為$_POST數(shù)組,故保留原型,交給$GLOBALS['HTTP_RAW_POST_DATA'] 來(lái)接收。

另外還有一項(xiàng) php://input 也可以實(shí)現(xiàn)此這個(gè)功能

php://input 允許讀取 POST 的原始數(shù)據(jù)。和 $HTTP_RAW_POST_DATA 比起來(lái),它給內(nèi)存帶來(lái)的壓力較小,并且不需要任何特殊的 php.ini 設(shè)置。php://input 不能用于 enctype="multipart/form-data"。

應(yīng)用:

a.htm:

<form action="post.php" method="post">
<input type="text" name="user">
<input type="password" name="password">
<input type="submit">
</form>

post.php:

<? echo file_get_contents("php://input"); ?>

關(guān)于“PHP中$GLOBALS['HTTP_RAW_POST_DATA']和$_POST的區(qū)別有哪些”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI