2013-07-03 32 views
1

在非post請求期間當請求體被提供爲x-www-form-urlencodedmultipart/form-data時,有沒有辦法讓PHP自動填充$ _POST超全局數組?在非POST請求期間PHP不解析x-www-form-urlencoded數據

目前,如果我發出PATCH請求,並且請求由上述任一種內容類型組成,那麼數據永遠不會輸入超全球。

+2

你不應該接觸超全球植物。如果其餘的代碼需要它們。你應該圍繞它們編寫一個包裝器,並且有一個用於填充包裝器的特定方法。 – Orestes

+0

我不需要將值推入超大全局,所以這不是問題。 –

+1

不,PHP沒有任何內置的方法來實現這一點;它的HTTP抽象是非常有限的,迎合了網絡的九十年代版本,其中'GET'和'POST'是唯一被大量使用的HTTP動詞。我一直有意爲自己編寫一個multiplart MIME解析器,而沒有理解它。由其SAP SAPI構成的PHP對RESTful Web應用程序不太有利。您可以共同支持,但目前該語言不提供完整的(本機)HTTP工具包。 – rdlowrey

回答

0

構建RESTful API時遇到了類似的問題。以下是構建$requestData的代碼。到俄勒斯特'點,我不修改超全球。應該讓你開始:

switch ($request_method) { 
    case 'get': 
     $requestData = $_GET; 
     break; 
    case 'post': 
     $requestData = $_POST; 
     break; 
    case 'put': 
    case 'delete': 
     // read string from PHP's special input location and parse into an array 
     parse_str(file_get_contents('php://input'), $requestData);  
     break; 
} 
+1

這隻支持'x-www-form-urlencoded',對吧? –