ホームページ >バックエンド開発 >PHPチュートリアル >multipart/form-data を使用する場合、PHP で生の POST データにアクセスするにはどうすればよいですか?

multipart/form-data を使用する場合、PHP で生の POST データにアクセスするにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-26 09:31:11326ブラウズ

How Can I Access Raw POST Data in PHP When Using multipart/form-data?

予期しない動作: 生の投稿データは利用できません

PHP マニュアルに記載されているように、php://input も $HTTP_RAW_POST_DATA も使用できませんmultipart/form-data コンテンツ タイプを持つリクエストの生の POST データを取得するために使用されます。これは、php://input を使用すると生データを効率的に取得できますが、コンテンツ タイプが multipart/form-data ではない場合にのみ機能するためです。

multipart/form-data フォームの回避策

マルチパート/フォームデータリクエストの生の投稿データに直接アクセスできないにもかかわらず、取得するための回避策が存在します。それ:

  1. Apache Config の変更: Apache 構成ファイルに次の設定を追加します:

    <Location "/backend/XXX.php">
     SetEnvIf Content-Type ^(multipart/form-data)(.*) NEW_CONTENT_TYPE=multipart/form-data-alternate OLD_CONTENT_TYPE=
     RequestHeader set Content-Type %{NEW_CONTENT_TYPE}e env=NEW_CONTENT_TYPE
    </Location> 
  2. トリックPHP: この変更により、受信リクエストの Content-Type が XXX.php に変更されます。 multipart/form-data から multipart/form-data-alternate へ。その結果、PHP はデータの解析を試行しなくなります。
  3. 生データの取得: php://input から完全な生データにアクセスして解析できるようになりました。

考慮事項:

  • 回避策を実行すると、空の $_FILES 配列が作成されます。
  • このハックは、公式ソリューションですが、multipart/form-data の生データを取得する手段を提供します
  • このような問題を完全に回避するには、データを送信するパートナーが正しいコンテンツ タイプに準拠していることを確認することが常に最善です。

以上がmultipart/form-data を使用する場合、PHP で生の POST データにアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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