10

生のPOSTデータの意味を理解しようとしています。PHPのマニュアルページには$HTTP_RAW_POST_DATA、この変数にが含まれていると記載されていますRaw POST data

この変数はいつ設定され、生のPOSTデータの意味は何ですか?

私は理解して$_POSTいますが、私は完全に混乱してい$HTTP_RAW_POST_DATAます。

4

5 に答える 5

14

HTTPリクエストは2つの部分で構成されています。ヘッダーと本文のセット。

ヘッダーには、要求されているURLやキャッシングコントロールヘルパーなどが含まれます(「昨日からのバージョンがあります。変更がある場合にのみ新しいバージョンを提供しますね」など)。

リクエストの種類によって、本文が表示される場合と表示されない場合があります。POSTリクエストには本文があります。

本文は、クライアントが好む任意の形式にすることができます。ヘッダーの1つは、サーバーにフォーマットを通知します。

HTMLフォームで使用される形式はいくつかあり、PHPはこれらを解析してデータをに入れる方法を知っています$_POST

データがJSONなどの別の形式である場合、またはデータがPHPの癖([]同じ名前のキーの末尾にあるルールなど)に準拠していない場合は、データに直接アクセスすることをお勧めします。自分で解析できます。

これが生のPOSTデータです。

于 2012-08-30T10:44:21.107 に答える
4

$_POST$HTTP_RAW_POST_DATA変数を分割した後の結果と言えます。PHPは、生の投稿データを分割し、$_POST配列に表示される方法でフォーマットします。例えば:

$HTTP_RAW_POST_DATAこのように見えます

key1=value1&key2=value2

次に、次$_POSTのようになります。

$_POST = array(
    "key1" => "value1",
    "key2" => "value2",);
于 2012-08-30T10:39:03.467 に答える
2

HTTPはテキストベースのプロトコルであるため、すべてのデータは文字列として渡されます。作業するとき$_POSTは、渡されたデータがすでに処理されており、配列形式になっています。これは、コントロールがスクリプトに渡される直前にPHPによって自動的に実行されます。

したがって、生のPOSTデータには、ネットワークを通過したときのデータが含まれます。

a=1&b=2URLに表示されるように、データが表示される可能性があります。

于 2012-08-30T10:27:40.530 に答える
1

HTTPプロトコルで実行できることの1つは、サーバーにテキストを送り返すPOSTリクエストを実行することです。

$HTTP_RAW_POST_DATAそれが何を言っていても、そのテキストが含まれます。

ほとんどの場合、POSTリクエストを実行するときに、送信されるテキストに「コンテンツタイプ」を追加します。これにより、サーバーにコンテンツの種類が通知されます。ほとんどの場合、Webではコンテンツタイプを「application/x-www-form-urlencoded」として送信しています。

$_POSTサーバーがこのコンテンツタイプマーカーを使用してPOSTリクエストを受信すると、サーバーは「test=hello」が次のようになるようにデータを配列に変換しようとすることを認識します。

$_POST['test']='hello'
于 2012-08-30T10:29:22.077 に答える
1

$HTTP_RAW_POST_DATA次の形式のような生のPOSTデータが含まれています。

  • 文章
  • JSON
  • XML
  • HTML

この機能はPHP5.6.0で非推奨になっているため、通常はphp://input代わりに使用する必要があります。$HTTP_RAW_POST_DATA.この機能に依存することは強くお勧めしません。

ソース:php.net-$ HTTP_RAW_POST_DATA

于 2015-01-18T08:32:39.180 に答える