如何以HTML格式发送PUT/DELETE请求?

Hou*_*sni 13 rest

我在PHP中乱搞REST,我明白我可以捕获请求方法vi a $_SERVER['REQUEST_METHOD'].但是如何在不使用cURL的情况下在PHP中触发PUT/DELETE请求?我想使用默认PHP安装的功能来执行此操作.我无法想象更改form标签的method属性来指定除GET或POST以外的方法可以在所有浏览器上运行...加上HTML标准无法识别它.

顺便说一下,我在PHP 5.2.6上.

谢谢.

Rob*_*t K 5

通常这是由隐藏的表单字段完成的,并在应用程序中处理(而不是Web服务器,大体上).

<input type="hidden" name="_method" value="put" />
Run Code Online (Sandbox Code Playgroud)

因此,在这种情况下,您将使用一组简单的if-else语句来确定_method变量是否被覆盖(当然是有效的).我会用以下的东西:

$method = 'get';
if($_SERVER['REQUEST_METHOD'] == 'POST') {
  if(isset($_POST['_method']
     && ($_POST['_method'] == 'PUT' || $_POST['_method'] == 'DELETE')) {
    $method = strtolower($_POST['_method']);
  } else {
    $method = 'post';
  }
}
Run Code Online (Sandbox Code Playgroud)

这将是确定应用程序或框架的请求类型的简单方法.


Tim*_*ter 1

fopen会执行 HTTP,但我相信它只会执行 GET 请求。如果您使用fsockopen,您需要自己处理 HTTP 协议,生成标头等。

您可以使用HTTPRequest(在php_http扩展中)或PEAR

更新:

如果您确实是在谈论PHP 脚本发出 PUT/DELETE 请求,而不是它们发出请求,那么这个问题可能会引起您的兴趣:

PUT、DELETE、HEAD 等方法在大多数 Web 浏览器中都可用吗?