無需PHP 幹預即可解析Multipart/Form-Data 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>
指令變更傳入要求的Content-Type標頭從multipart/form-data 到/backend/XXX.php 到multipart/form-data-alternate,阻止 PHP 嘗試解析請求。
擷取原始資料並解析
修改配置後,可以從php://input取得原始資料並手動解析。但是,此方法有一個警告:$_FILES 陣列將為空。
這種解決方法並不理想,但它為預設 PHP 解析失敗的情況提供了一種解決方案。
以上是如何在不使用內建函數的情況下在 PHP 中解析多部分/表單資料 POST 請求?的詳細內容。更多資訊請關注PHP中文網其他相關文章!