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

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

Mary-Kate Olsen
發布: 2024-11-26 09:31:11
原創
386 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板