ホームページ >バックエンド開発 >PHPチュートリアル >PHP の $GLOBALS['HTTP_RAW_POST_DATA'] と $_POST の違いの詳細な図による説明
この記事では、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"); ?>関連推奨事項:
の違い
以上がPHP の $GLOBALS['HTTP_RAW_POST_DATA'] と $_POST の違いの詳細な図による説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。