HTTP プロトコルの POST メソッドには複数の形式のデータ プロトコルがあり、HTTP ヘッダーのさまざまな Content-type によって識別されます。一般的に使用されるものは、
application/x-www-form です。 - 最も一般的な urlencoded
は、from フォームの形式であり、HTTP ヘッドでは、Content-Type: application/x-www-form-urlencoded.
multipart/form-data
、これはファイルのアップロードに使用され、HTTP ヘッドでは Content-Type: multipart/form-data; border=----WebKitFormBoundary7MA4YWxkTrZu0gW
になります。
Raw これは特に一般的には使用されません。送信されるデータは HTTP ボディに 1 つのセグメントのみを持ち、キーと値のペアの形式で格納されません。HTTP ヘッドでは、Content-タイプ: application/json
、Content-Type: text
、Content-Type: application/xml
、Content-Type: text/xml
など
の場合、このフォームのデータは、$_POST['name']
を使用してphpで直接取得できます。特別な
この形式のデータは、php で $_POST['name']
を使用して取得できます。 $_FILES['file']
.Raw 形式のデータの場合、上記 2 つの方法では取得できないため、他の方法を使用する必要があります。
1.
file_get_contents("php://input")Get を使用します; テストするために簡単な php ファイルを作成します<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"><?php
$test=file_get_contents("php://input");
echo $test;</pre><div class="contentsignin">ログイン後にコピー</div></div>
postman でテストします
問題ありません、受信できます
2.
$GLOBALS['HTTP_RAW_POST_DATA']Receive<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"><?php
$test=$GLOBALS[&#39;HTTP_RAW_POST_DATA&#39;];
echo $test;</pre><div class="contentsignin">ログイン後にコピー</div></div>
を使用して postman でテストしてください
クソ、何か問題が発生しました。プロンプトが見つかりませんでした。
HTTP_RAW_POST_DATAこの配列インデックスは一体何ですか? Google で検索したところ、次の段落を見つけました。 PHP Words の公式サイト
は php5.6 で廃止され、php7.0 以降のバージョンでは削除されていることがわかりました。私が使用しているのは、php のバージョンが 7.2 です。何かが間違っているはずです。わかりました。
Get it 実際の開発では、 , フレームワークを使うのが一般的ですが、私はthinkphpをよく使います。tp5.0ではRequestのgetInput()関数を使ってRaw
<?php namespace app\index\controller; use think\Request; class Index { public function index(Request $request) { echo $request->getInput(); } }
Test it
のデータを取得できます。問題ありません、普通に取得できます
ここではPHPでHTTP POSTデータを取得する方法を紹介しますので、困っている方の参考になれば幸いです!
以上がPHP は HTTP POST でさまざまな形式のデータを取得しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。