ajax 経由で php プログラムにデータを渡す場合、$_POST を使用してデータを取得できないことがわかりますが、print_r(file_get_contents(") を使用すると、実際には json データが存在することがわかります。 php:/ /input"))、json データを取得できます
では、php://input とは何ですか?
php://input の紹介、公式 PHP マニュアル文書には、それを非常に明確にする段落があります。概要。
php://input を使用すると、生の POST データを読み取ることができます。$HTTP_RAW_POST_DATA に代わるメモリ消費量が少なく、特別な php.ini ディレクティブは必要ありません。enctype=”multipart / では php://input を使用できません。 form-data".
" 翻訳すると、次のようになります:
"php://input は、未処理の POST データを読み取ることができます。 $HTTP_RAW_POST_DATA と比較して、メモリへの負担が少なく、特別な php.ini 設定は必要ありません。 php://input は enctype=multipart/form-data" には使用できません。
1. Content-Type 値が application/x-www-form-urlencoded の場合、php は http リクエストの対応するデータを埋めます。 body を配列 $_POST に挿入すると、$_POST 配列に入力されたデータは urldecode() 分析の結果になります (実際には、Content-Type に加えて、データがフォーム データであることを示す multipart/form-data もあります)。後で紹介します)
2. php://input data、Content-Type が multipart/form-data でない限り (この条件は後で紹介します)、php: //入力データは一貫しています一貫したデータの長さは、Content-Length 3 で指定されます。Content-Type が application/x-www-form-urlencoded で、送信メソッドが POST メソッドの場合のみ、$_POST データが返されます。および php://input データは同じです (引用符付きで、形式が一貫しておらず、内容が一貫していることを示します)。 4. php://input は一致しません。 http リクエスト ヘッダーの PATH フィールドは http リクエストのボディ部分に書かれていないため、$_GET データを読み取ってください。php:// についてはすでにある程度理解されていると思います。 $http_raw_post_data $とは何ですか? http_raw_post_data は、PHP に組み込まれているグローバル変数で、Content-Type が認識されない場合に、POST データをそのまま変数 $http_raw_post_data に格納するために使用されます。 multipart/form のタイプ -data POST データ。php.ini の always_populate_raw_post_data 値を On に設定する必要があります。これにより、PHP は変数 $http_raw_post_data に常に POST データを入力します。Coentent-Type はのみを受け取ります。値 application/x-www. -data-urlencoded と multipart/form-data の 2 つのケースでは、PHP は http リクエスト パケット内の対応するデータをグローバル変数 $_POST に書き込みます
2. Content- Type type は PHP では認識できません。http リクエスト パケット内の対応するデータは変数 $HTTP_RAW_POST_DATA に埋められます
3. Coentent-Type が multipart/form-data でない場合にのみ、PHP は対応するデータを埋め込みませんそれ以外の場合は、http リクエスト パケットを php://input に追加します。 Coentent-Length で指定されるパディングの長さ。
4. Content-Type が application/x-www-data-urlencoded の場合のみ、php://input データと $_POST データが一致します。
5. php://input データは常に $HTTP_RAW_POST_DATA と同じですが、php://input は $HTTP_RAW_POST_DATA より効率的で、php.ini の特別な設定は必要ありません
6. PHP は query_path 部分を置き換えますPATH フィールドのグローバル変数 $_GET を入力します。通常、GET メソッドによって送信される http リクエストの本文は空です。