PHP在非POST请求期间不解析x-www-form-urlencoded数据

PHP在非POST请求期间不解析x-www-form-urlencoded数据,php,http,http-post,content-type,http-patch,Php,Http,Http Post,Content Type,Http Patch,在非POST请求期间,当请求主体以x-www-form-urlencoded或multipart/form data的形式提供时,是否有办法让PHP自动填充$\u POST超全局数组 目前,如果我发出一个补丁请求,请求主体由上述任何一种内容类型组成,那么数据永远不会输入到超全局中。我在构建RESTful API时遇到了类似的问题。下面是生成$requestData的代码。为了Orestes'点,我不修改超全局。你应该开始: switch ($request_method) { case

在非POST请求期间,当请求主体以
x-www-form-urlencoded
multipart/form data
的形式提供时,是否有办法让PHP自动填充$\u POST超全局数组


目前,如果我发出一个
补丁
请求,请求主体由上述任何一种内容类型组成,那么数据永远不会输入到超全局中。

我在构建RESTful API时遇到了类似的问题。下面是生成
$requestData
的代码。为了Orestes'点,我不修改超全局。你应该开始:

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;
}

你不应该碰超球体。如果代码的其余部分需要它们。你应该围绕它们编写一个包装器,并有一个特定的方法来填充你的包装器。我不需要将这些值推送到超全局中,所以这不是一个问题。不,PHP没有任何内置的方法来实现这一点;它的HTTP抽象非常有限,适合于90年代版本的web,
GET
POST
是唯一被大量使用的HTTP动词。我自己也一直想写一个多部分MIME解析器,但一直没有时间去做。由web SAPI构成的PHP对RESTful web应用程序不是很有帮助。你可以一起破解支持,但目前该语言根本不提供完整的(本机)HTTP工具包。请将此注释转换为答案,我会将其标记为正确。