ホームページ >バックエンド開発 >PHPチュートリアル >PHP でマルチパート/フォームデータリクエストから生の POST データにアクセスするにはどうすればよいですか?

PHP でマルチパート/フォームデータリクエストから生の POST データにアクセスするにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-26 15:01:10524ブラウズ

How Can I Access Raw POST Data from Multipart/Form-Data Requests in PHP?

マルチパート/フォームデータリクエストの生のポストデータへのアクセス

一方、PHP は php://input や $HTTP_RAW_POST_DATA などの取得メカニズムを提供しています。生の POST データの場合、これらのメソッドはマルチパート/フォームデータ要求には効果がありません。 PHP マニュアルによると:

"[...] php://input は enctype="multipart/form-data" では使用できません。"

マルチパートのソリューション/Form-Data Forms

このようなフォームの生データにアクセスするには、回避策が必要です。 PHP が自動的に解析するため、直接取得することはできません。ただし、次のハックを使用することはできます:

  1. 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>
  1. これにより、XXX に送信されるリクエストの Content-Type が変更されます。 .php を multipart/form-data から multipart/form-data-alternate に変更します。これにより、PHP がデータを自動的に解析できなくなります。
  2. php://input から生データを読み取ります。これで、生データを取得して自分で解析できるようになります。

注意:

この回避策は生データの取得の問題を解決しますが、次のような問題が発生します。空の $_FILES 配列。

以上がPHP でマルチパート/フォームデータリクエストから生の POST データにアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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