我在PHP中乱搞REST,我明白我可以捕获请求方法vi a $_SERVER['REQUEST_METHOD']
.但是如何在不使用cURL的情况下在PHP中触发PUT/DELETE请求?我想使用默认PHP安装的功能来执行此操作.我无法想象更改form标签的method属性来指定除GET或POST以外的方法可以在所有浏览器上运行...加上HTML标准无法识别它.
顺便说一下,我在PHP 5.2.6上.
谢谢.
通常这是由隐藏的表单字段完成的,并在应用程序中处理(而不是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)
这将是确定应用程序或框架的请求类型的简单方法.
fopen
会执行 HTTP,但我相信它只会执行 GET 请求。如果您使用fsockopen
,您需要自己处理 HTTP 协议,生成标头等。
您可以使用HTTPRequest(在php_http
扩展中)或PEAR。
更新:
如果您确实是在谈论向PHP 脚本发出 PUT/DELETE 请求,而不是从它们发出请求,那么这个问题可能会引起您的兴趣:
PUT、DELETE、HEAD 等方法在大多数 Web 浏览器中都可用吗?
归档时间: |
|
查看次数: |
16548 次 |
最近记录: |