我怎么能检测到哪个请求类型被使用(GET, POST, PUT或删除)在PHP?
当前回答
您可以获得任何查询字符串数据,例如www.example.com?id=2&name=r
您必须使用$_GET['id']或$_REQUEST['id']获取数据。
Post数据意味着像form <form action= " method=' Post '>你必须使用$_POST或$_REQUEST。
其他回答
你可以使用getenv函数,而不必使用$_SERVER变量:
getenv('REQUEST_METHOD');
更多信息:
http://php.net/manual/en/function.getenv.php
您可以获得任何查询字符串数据,例如www.example.com?id=2&name=r
您必须使用$_GET['id']或$_REQUEST['id']获取数据。
Post数据意味着像form <form action= " method=' Post '>你必须使用$_POST或$_REQUEST。
可以使用下面的代码片段检测HTTP方法或所谓的REQUEST method。
$method = $_SERVER['REQUEST_METHOD'];
if ($method == 'POST'){
// Method is POST
} elseif ($method == 'GET'){
// Method is GET
} elseif ($method == 'PUT'){
// Method is PUT
} elseif ($method == 'DELETE'){
// Method is DELETE
} else {
// Method unknown
}
如果你更喜欢这个而不是if-else语句,你也可以使用一个开关。
如果HTML表单中需要GET或POST以外的方法,则通常使用表单中的隐藏字段来解决这个问题。
<!-- DELETE method -->
<form action='' method='POST'>
<input type="hidden" name'_METHOD' value="DELETE">
</form>
<!-- PUT method -->
<form action='' method='POST'>
<input type="hidden" name'_METHOD' value="PUT">
</form>
关于HTTP方法的更多信息,我想参考下面的StackOverflow问题:
HTTP协议的PUT和DELETE及其在PHP中的使用
我们还可以使用input_filter来检测请求方法,同时通过输入环境保护来提供安全性。
$request = filter_input(INPUT_SERVER, 'REQUEST_METHOD', FILTER_SANITIZE_ENCODED);
$request = new \Zend\Http\PhpEnvironment\Request();
$httpMethod = $request->getMethod();
通过这种方式,您也可以在zend框架2中实现。 谢谢。
推荐文章
- PHP有代码混淆器吗?
- 有没有办法在python中做HTTP PUT
- 跨源请求头(CORS)与PHP头
- PHP sprintf转义%
- 我能在服务器端应用程序(PHP、Ruby、Python等)上读取URL的哈希部分吗?
- 如何看到PHP加载的扩展?
- 如何使用Laravel和Eloquent查询两个日期之间?
- 从Laravel 5中的另一个控制器访问控制器方法
- 使用类型提示时不能传递空参数
- 什么是http头“X-XSS-Protection”?
- PHP是空时为空?
- 什么是自动装填;你如何使用spl_autoload, __autoload_register ?
- 在nodejs http中body在哪里。得到回应?
- 将查询字符串解析为数组
- 在PHP中::(双冒号)和->(箭头)之间的区别是什么?