【问题标题】:How to access POST data in PHP?如何在 PHP 中访问 POST 数据?
【发布时间】:2009-03-19 21:27:17
【问题描述】:

我需要编写一个 PHP 页面来接受通过 POST 请求发送的 XML 文档,如下所示:

POST /mypage.php HTTP/1.1
Host: myhost.com
Content-Type: application/xml
Content-Length: ...

<?xml version="1.0" encoding="utf-8"?>
<data>
 ...
</data>

这不是来自某些 HTML 表单的数据,只是一个普通的 XML 文档。

如何在我的 PHP 代码中访问这个 XML?

【问题讨论】:

    标签: php http post


    【解决方案1】:

    php://input 读取。例如,您可以使用:

    $rawdata = file_get_contents('php://input');
    

    $rootNode = simplexml_load_file('php://input');
    

    使用 $HTTP_RAW_POST_DATA 的替代方法也可以使用 - 但速度较慢并且需要 PHP 配置 always_populate_raw_post_data

    【讨论】:

    • 你也可以做 simplexml_load_file("php://input");
    • tomhaigh:是的,我本能地避免使用该功能,因为我记得它使用自己的子系统。事实证明,从 php 5.1 开始,情况不再如此。
    【解决方案2】:

    【讨论】:

      【解决方案3】:

      http://us.php.net/manual/en/reserved.variables.httprawpostdata.php

      $HTTP_RAW_POST_DATA 应该是可用的,假设请求的内容类型不是 multipart/form-data

      【讨论】:

        【解决方案4】:

        【讨论】:

          【解决方案5】:

          您可能想使用PHP input。类似的东西

          $postText = trim(file_get_contents('php://input'));
          

          【讨论】:

            【解决方案6】:

            以下任何一种都可以:

            $HTTP_RAW_POST_DATA variable or the php://input stream.
            

            然而,对于

            $HTTP_RAW_POST_DATA variable
            

            要工作,您可能需要更改配置文件中的 .ini 设置

            【讨论】:

              【解决方案7】:

              如果你使用 print_r($_POST);你将能够看到你得到了什么。除非我错过了什么... 编辑:nvm,完全忘记了原始数据:/

              【讨论】:

              • $_POST 只包含表单数据,这不是表单数据,因为它没有与之关联的变量名。例如,如果您将 SOAP 数据包发布到 Web 服务,则 HTTP Post 有效负载将仅包含 XML,而没有附加任何变量。
              猜你喜欢
              • 2016-01-14
              • 2021-09-30
              • 2012-09-22
              • 2023-02-04
              • 1970-01-01
              • 2015-12-08
              • 1970-01-01
              • 2014-07-14
              • 2014-03-08
              相关资源
              最近更新 更多