【问题标题】:HTTP PUT, DELETE and I/O streams with PHP使用 PHP 的 HTTP PUT、DELETE 和 I/O 流
【发布时间】:2013-04-24 21:57:19
【问题描述】:

除了$putdata = fopen("php://input", "r");之外,我还有什么方法可以访问通过 HTTP PUT 方法发送的数据?

我从未使用过PUTDELETE 方法,$putdata = fopen("php://input", "r"); 似乎有点粗略。如果需要特定的 server/php.ini 配置,它会在任何地方工作吗?

我知道可以从$_SERVER['REQUEST_METHOD'];获取请求方法

但是数据会在$_REQUEST 中吗?如果是,那么php://input 是关于什么的? 以及如何访问通过DELETE 发送的数据?

【问题讨论】:

    标签: php http put http-delete


    【解决方案1】:

    不,您需要手动解析请求。 $_REQUEST 仅包含来自 GETPOST 请求的数据;其他一切都靠你自己。

    如果您的 HTTP 请求包含 Content-Type: application/x-www-form-urlencoded,您可以使用 parse_str 非常轻松地将其解析回变量数组,如下所示:

    parse_str(file_get_contents('php://input'), $vars);
    print_r($vars);
    

    您可以将此内容类型与任何 HTTP 方法一起使用,没有标准强加的限制。

    【讨论】:

    • 有趣! 'DELETE' 也将在php://input?
    • @rinchik: php://input 包含客户端作为 HTTP 请求正文发送的任何内容。方法(GET/POST/DELETE/whatever)也是客户的选择。作为正文发送的数据类型也是客户端的选择。所以是的,它适用于所有只要服务器知道如何处理客户端发送的内容。我的示例仅说明了一种可能的处理方式,之所以选择这种方式是因为它与使用 POST 提交表单时使用的方式完全相同。
    • 哦!刚刚发现:uk.php.net/manual/en/function.http-get-request-body-stream.php 替代 file_get_contents('php://input'), $vars
    • @rinchik:我不明白使用扩展程序中的功能需要手动安装,而不是使用执行相同工作的内置功能。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-12
    • 2012-03-25
    • 2012-10-18
    • 2014-06-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多