【问题标题】:Accessing $_POST in php在 php 中访问 $_POST
【发布时间】:2015-10-02 07:13:14
【问题描述】:

我正在开发一个 Android 应用程序,它与服务器端的 php 通信以访问数据库。但是当我使用POST方法更新数据时,无法在php中获取$_POST,它一直是空的。我尝试使用postmanchrome 插件来查看它是否是应用程序的问题,但即使在这种情况下$_POST 也是空的。我正在使用 php 5.2。

<?php

    echo "hello"; // Works fine.

    switch($_SERVER['REQUEST_METHOD'])
    {
        case 'GET': echo "GET"; break;
        case 'POST': echo "POST"; break; // prints POST
        default: echo "DEFAULT";
    }

    echo $_POST; // Not printing as its empty
    if(empty($HTTP_POST_VARS ))
    {
        echo "POST EMPTY"; // This is printed
    }
...

?>

感谢任何帮助。

【问题讨论】:

  • 你在发送之前检查过android端的数据,它不是空的。
  • 如果 php 中的超级全局 $_POST 为空,则没有提供 post 参数。因此,要么根本没有发送它们,要么在某些代理或重写步骤中迷路了。
  • 是的。我证实了这一点。另外,我使用 postman chrome 插件进行了验证,其中我可以设置参数、HTTP 方法等并检查输出
  • 一个非常疯狂的猜测:检查您的 php.ini 配置:可能是(为什么)您启用了此设置:enable_post_data_reading = Off
  • 检查网络服务器访问日志,看看应用程序是否确实按照它应该做的那样进行 POST。

标签: php android http post


【解决方案1】:

在 PHP 中,您可以像这样返回所有请求参数,这样您就可以在服务器端看到您收到的内容:

print_r($_REQUEST);

如果它是空的,那么你没有发送任何东西

【讨论】:

  • 这样做有什么好处?如果$_POST 为空,则为空。然后这些值不会神奇地出现在$_REQUEST 中。
  • 也许他使用了错误的 HTTP 动词,这会暴露出这样的疏忽
  • OP 将准确查看邮递员尝试中选择的内容。所以那里没有新信息。
猜你喜欢
  • 2015-09-16
  • 1970-01-01
  • 2012-07-03
  • 1970-01-01
  • 2011-11-23
  • 2012-11-11
  • 1970-01-01
  • 1970-01-01
  • 2011-07-17
相关资源
最近更新 更多