ホームページ >バックエンド開発 >PHPチュートリアル >PHPでJSON POSTリクエストボディにアクセスするにはどうすればよいですか?

PHPでJSON POSTリクエストボディにアクセスするにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-27 06:48:17108ブラウズ

How to Access JSON POST Request Body in PHP?

PHP で POST リクエストボディを JSON として取得する方法?

JSON データを POST として PHP ページに送信するときに、その値にアクセスすると、 var_dump($_POST) のように、難しいように思えます。空の配列を返します。 JSON ペイロードを取得するには、特別な入力ストリームが必要です。

php://input または STDIN を使用する

POST リクエストの生のエンティティ本文にアクセスするには:

$entityBody = file_get_contents('php://input');

または、次のようにすることもできます。 STDIN:

$entityBody = stream_get_contents(STDIN);

php://input 考慮事項

  • php://input は読み取り専用ストリームです。
  • より信頼性が高く、php.ini に依存しないため、$HTTP_RAW_POST_DATA の代わりに使用する必要があります。
  • Php://input は enctype="multipart/form-data" リクエストではサポートされていません。

php://input の可読性の維持

php://input はシーク不可能なので、一度しか読み取れません。入力ストリームを保持するには:

function detectRequestBody() {
    $rawInput = fopen('php://input', 'r');
    $tempStream = fopen('php://temp', 'r+');
    stream_copy_to_stream($rawInput, $tempStream);
    rewind($tempStream);

    return $tempStream;
}

マルチパート/フォーム データ リクエストの処理

マルチパート/フォーム データ リクエストの場合、JSON ペイロードは$_POST スーパーグローバル。

以上がPHPでJSON POSTリクエストボディにアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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