ホームページ > バックエンド開発 > PHPチュートリアル > 組み込み関数を使用せずに PHP でマルチパート/フォームデータ POST リクエストを解析するにはどうすればよいですか?

組み込み関数を使用せずに PHP でマルチパート/フォームデータ POST リクエストを解析するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-05 04:29:10
オリジナル
489 人が閲覧しました

How Can I Parse Multipart/Form-Data POST Requests in PHP Without Using Built-in Functions?

PHP の介入なしでマルチパート/フォームデータの POST リクエストを解析する

マルチパートの処理における php://input と $HTTP_RAW_POST_DATA の制限にもかかわらず/form-data POST リクエスト、生データにアクセスする方法があります

RAW multipart/form-Data 解析の課題

PHP は multipart/form-data リクエストを自動的に解析するため、生データを直接取得することができません。これは、PHP が解析できない間違った形式のデータを扱うときに問題になる可能性があります。

制限を回避する

解決策は、Apache 構成を使用してリクエスト ヘッダーを変更することです。指令。 Content-Type を multipart/form-data から multipart/form-data-alternate に変更することにより、PHP はリクエストを解析しないように騙されます。

Apache 構成の変更

次のコードを 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> 
ログイン後にコピー

このディレクティブは、 multipart/form-data から multipart/form-data-alternate への /backend/XXX.php への受信リクエストの Content-Type ヘッダーにより、PHP がリクエストを解析しようとすることが防止されます。

生データの取得および解析

設定を変更した後、生データを php://input から取得して解析できます。手動で。ただし、この方法には注意点が 1 つあります。$_FILES 配列が空になるということです。

この回避策は理想的ではありませんが、デフォルトの PHP 解析が失敗する状況に対する解決策となります。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート