如何在 PHP 中获取 PUT/DELETE 参数

Posted

技术标签:

【中文标题】如何在 PHP 中获取 PUT/DELETE 参数【英文标题】:How to get PUT/DELETE arguments in PHP 【发布时间】:2013-12-17 17:00:41 【问题描述】:

我正在编写一个 REST Web 服务,想知道如何处理 php 的 put 或 delete 参数。

我将输入如下,

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

输出=imei=1234567890&email=hello%40gmail1.com

如何访问这些变量,例如

echo $_POST['imei'];
echo $_POST['email'];
echo $_GET['imei'];
echo $_GET['email'];

我发现 php 中没有像 $_PUT 或 $_DELETE 这样的东西来处理输入参数。得到这个的方法是什么?

【问题讨论】:

您可以将其编码为json格式,然后您可以将它们作为json对象访问。 试试这个parse_str $_SERVER['REQUEST_METHOD'] This answer 可能会有所帮助。请务必检查您的网络服务器是否支持 PUT 和 DELETE 请求,但它不支持,请尝试给定的解决方法。 【参考方案1】:

你能不能试试这个,PHP没有内置的方法可以做到这一点,可以从传入的流中读取到PHP,php://input

 parse_str(file_get_contents("php://input"));

前:

  if($_SERVER['REQUEST_METHOD'] == 'GET') 
    echo "this is a get request\n";
    echo $_GET['fruit']." is the fruit\n";
    echo "I want ".$_GET['quantity']." of them\n\n";
 elseif($_SERVER['REQUEST_METHOD'] == 'PUT') 
    echo "this is a put request\n";
    parse_str(file_get_contents("php://input"),$post_vars);
    echo $post_vars['fruit']." is the fruit\n";
    echo "I want ".$post_vars['quantity']." of them\n\n";

参考:http://www.lornajane.net/posts/2008/accessing-incoming-put-data-from-php

【讨论】:

【参考方案2】:

不幸的是 php 默认不处理 put 或 delete 请求。我创建了一个库来处理这种请求。它还处理多部分请求(PUT PATCH DELETE 等)

你可以在这里找到它https://github.com/notihnio/php-request-parser

【讨论】:

虽然我们喜欢答案中的链接,但我们倾向于不鼓励仅链接的答案,因为当链接过期时它们会变得无用。请用更多信息更新您的答案:)

以上是关于如何在 PHP 中获取 PUT/DELETE 参数的主要内容,如果未能解决你的问题,请参考以下文章

Ajax中Put和Delete请求传递参数无效的解决方法(Restful风格)

Nginx proxy_pass 基于 POST/GET/PUT/DELETE 参数

PHP curl 实现RESTful PUT DELETE 实例

PHP curl 实现RESTful PUT DELETE 实例

如何在 jQuery 中发送 PUT/DELETE 请求?

如何在 HttpURLConnection 中发送 PUT、DELETE HTTP 请求?