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

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

DDD
DDDオリジナル
2024-11-25 01:38:14617ブラウズ

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

生の Multipart/Form-Data POST データへのアクセス

PHP では、multipart/form-data POST リクエストのデフォルトの動作は、入力データは PHP によって自動的に解析されます。これは、解析されていない生のデータにアクセスする必要がある場合に問題を引き起こします。

php://input と $HTTP_RAW_POST_DATA の両方を使用して生の POST データにアクセスできますが、どちらもマルチパート/フォームデータ リクエストには機能しません。

回避策

残念ながら、生のファイルを入手するには従来の PHP メソッドでは、マルチパート/フォーム データ フォームのデータを作成することはできません。 PHP はデータ自体を解析することを要求するため、手動で解析できなくなります。

ただし、Apache 構成の変更を伴う回避策があります。次のスニペットを Apache conf ファイルに追加すると、受信リクエストの Content-Type を変更できます:

<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> 

これにより、PHP は multipart/form-data リクエストを multipart/form-data として扱うようになります。 -alternate、自動解析を防ぎます。この回避策を使用すると、php://input から読み取り、手動で解析することで生データにアクセスできます。

制限事項

この回避策により、生データには制限もあります。具体的には、PHP はフォーム データを解析しないため、$_FILES スーパーグローバルは空になります。

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

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