ホームページ  >  記事  >  バックエンド開発  >  PHP の $GLOBALS['HTTP_RAW_POST_DATA'] と $_POST の違いの詳細な図による説明

PHP の $GLOBALS['HTTP_RAW_POST_DATA'] と $_POST の違いの詳細な図による説明

墨辰丷
墨辰丷オリジナル
2018-05-21 09:50:542084ブラウズ

この記事では、PHP における $GLOBALS['HTTP_RAW_POST_DATA'] と $_POST の違いを主に紹介し、具体的な例に基づいて $GLOBALS['HTTP_RAW_POST_DATA'] と $_POST の機能と使い方を分析します。

の詳細は次のようになります:

$_POST:通过 HTTP POST 方法传递的变量组成的数组。是自动全局变量。
$GLOBALS['HTTP_RAW_POST_DATA'] : $HTTP_RAW_POST_DATA 変数は常に元の POST データを含んで生成されます。この変数は、認識できない MIME タイプのデータが検出された場合にのみ生成されます。 $HTTP_RAW_POST_DATA は、enctype="multipart/form-data" フォーム データでは使用できません。

つまり、基本的に $GLOBALS['HTTP_RAW_POST_DATA'] と $_POST は同じです。
ただし、投稿されたデータが PHP によって認識されない場合は、$GLOBALS['HTTP_RAW_POST_DATA'] を使用して、text/xml や SOAP などのデータを受け取ることができます。

追加説明: PHPがデフォルトで認識するデータ型は、application/x-www.form-urlencoded標準データ型です。

マニュアルには次のように書かれています:

常に元の POST データを含む変数を生成します。それ以外の場合、この変数は、認識できない MIME タイプのデータが検出された場合にのみ生成されます。ただし、生の POST データにアクセスするより良い方法は、php://input です。 $HTTP_RAW_POST_DATA は、enctype="multipart/form-data" フォーム データでは使用できません。

質問: $HTTP_RAW_POST_DATA == $_POST ですか?

マニュアルによれば、答えは「いいえ」であるはずです。
違うとしたら、その違いは何ですか?

私は次のように答えを知っています:

RAW / 未解釈の HTTP POst 情報には、次のコマンドを使用してアクセスできます:
$GLOBALS['HTTP_RAW_POST_DATA']
これは、post Content-Type が PHP が理解できるものではない場合に役立ちます。 (text/xmlなど)

つまり、基本的に$GLOBALS['HTTP_RAW_POST_DATA']と$_POSTは同じです。ただし、投稿されたデータが PHP によって認識されない場合は、$GLOBALS['HTTP_RAW_POST_DATA'] を使用して、text/xml や SOAP などのデータを受け取ることができます

デフォルトで PHP によって認識されるデータ型は、application/x-www.form-urlencoded の標準データ型です

Content-Type=text/xml タイプを使用して、XML ドキュメントのコンテンツを PHP サーバーに送信します。このPOSTデータを取得しますか?

RAW / 未解釈の HTTP POST 情報には、$GLOBALS['HTTP_RAW_POST_DATA'] を使用してアクセスできます。これは、投稿の Content-Type が PHP で理解できるものではない (text/xml など) 場合に便利です。デフォルトでは、PHP は application/x-www.form-urlencoded の標準データ型のみを認識するため、text/xml などのコンテンツを $_POST 配列に解析することはできないため、プロトタイプは保持され、$GLOBALS[' に渡されます。 HTTP_RAW_POST_DATA'] を使用して受信します。

この機能も実装できるphp://inputもあります

php://inputを使用するとPOSTの元データを読み込むことができます。 $HTTP_RAW_POST_DATA よりもメモリへの負担が少なく、特別な php.ini 設定は必要ありません。 php://input は enctype="multipart/form-data" では使用できません。

アプリケーション:

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"); ?>

関連推奨事項:

tomcat設定php は使用できません $_ post、$_get


PHP の $_GET と

$_POST

の違い

以上がPHP の $GLOBALS['HTTP_RAW_POST_DATA'] と $_POST の違いの詳細な図による説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。