首頁 >後端開發 >php教程 >使用 multipart/form-data 時如何在 PHP 中存取原始 POST 資料?

使用 multipart/form-data 時如何在 PHP 中存取原始 POST 資料?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-26 09:31:11377瀏覽

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 表單的解決方法

儘管無法直接存取多部分/表單資料請求的原始發布數據,但存在一種解決方法來檢索it:

  1. 修改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> 
  2. 技巧PHP: 此修改會將傳入要求的Content-Type 從multipart/form-data更改為XXX.php到多部分/表單資料替代。因此,PHP 將不再嘗試解析資料。
  3. 擷取原始資料:您現在可以從 php://input 存取完整的原始資料並自行解析。

注意事項:

  • 解決方法會導致 $_FILES 陣列為空。
  • 此 hack 不是官方解決方案,但它提供了一種獲取多部分/表單資料請求的原始資料的方法。
  • 它總是最好的確保發送資料的合作夥伴遵循正確的內容類型,從而完全避免此類問題。

以上是使用 multipart/form-data 時如何在 PHP 中存取原始 POST 資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn