$ _POST总是空的,$ _GET工作正常

时间:2012-06-15 19:16:29

标签: php post

我有一个函数返回每个请求的请求参数:

    private function GetRequestParams() {
    $method = $_SERVER['REQUEST_METHOD'];
    switch (strtolower($method)) {
        case 'put':
            $this->requestParams = //parse_str(HttpResponse::getRequestBody())
            $this->requestParams = array_map('urldecode', $this->requestParams);
            break;
        case 'post':
            $this->requestParams = $_REQUEST;
            break;
        case 'get':
            $this->requestParams = $_GET;
            break;
        case 'delete':
            $this->requestParams = $_REQUEST;
            break;
        default:
            $this->requestParams = $_REQUEST;
    }
}

但是当我使用GET和POST调用相同的url时,$ _POST参数为空。我使用WizTools RestClient和XAMPP工具中的Apache Server来调用以下url: http://localhost:80/project/?item=1

对于GET,请求参数正确包含“item”,但对于POST,请求参数为空。

似乎post方法被正确检测为以下函数,正确发送到postDescription()方法:

$method = strtolower($_SERVER['REQUEST_METHOD']) . 'Description';

我找到了一个信息来编辑php.ini post_max_size = 8 * M *到8 * MB *但这对我没用。

4 个答案:

答案 0 :(得分:6)

$_GET填充了URL查询字符串中的数据。

$_POST填充了帖子邮件正文中的数据。

如果您发出帖子请求但是在查询字符串中传递数据,那么数据将显示在$_GET而不是$_POST

答案 1 :(得分:1)

$ _ POST由HTML表单填充。如果您有一个表单并使用method =“POST”,那么表单中的结果将被置于POST中。否则,如果你从表单使用method =“get”或使用查询字符串(例如,index.php?foo = bar& this = that),那么结果将在$ _GET中。

然而,使用$ _REQUEST通常是安全的。

答案 2 :(得分:0)

我不太明白你为什么要开始检查两者,但$_GET检索URL中发送的参数(这就是你拥有它的方式),而$_POST检索数据“发布”到服务器......通常是通过某种形式。

你的最终目标是什么?

答案 3 :(得分:0)

首先,你应该永远不要使用某些评论中提到的$ _REQUEST。

来自http://php.net/manual/en/reserved.variables.request.php

Note: 
The variables in $_REQUEST are provided to the script via the GET, POST,
and COOKIE input mechanisms and therefore could be modified by the remote user
and cannot be trusted.
The presence and order of variables listed in this array is defined according
to the PHP variables_order configuration directive.

正如Quentin在他的回答中所说,如果你发出POST请求,必须在正文中提交POST数据

来自维基百科http://en.wikipedia.org/wiki/POST_(HTTP

  

名称=乔纳森+ Doe的安培;年龄= 23&安​​培;式= A +%2B + B +%3D%3D + 13%25%21

此致