我怎么能检测到哪个请求类型被使用(GET, POST, PUT或删除)在PHP?
当前回答
$request = new \Zend\Http\PhpEnvironment\Request();
$httpMethod = $request->getMethod();
通过这种方式,您也可以在zend框架2中实现。 谢谢。
其他回答
你可以使用getenv函数,而不必使用$_SERVER变量:
getenv('REQUEST_METHOD');
更多信息:
http://php.net/manual/en/function.getenv.php
通过使用
$_SERVER['REQUEST_METHOD']
例子
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// The request is using the POST method
}
要了解更多细节,请参阅$_SERVER变量的文档。
$request = new \Zend\Http\PhpEnvironment\Request();
$httpMethod = $request->getMethod();
通过这种方式,您也可以在zend框架2中实现。 谢谢。
因为这是关于REST的,所以仅仅从服务器获取请求方法是不够的。您还需要接收RESTful路由参数。分离RESTful参数和GET/POST/PUT参数的原因是资源需要有自己的唯一URL用于标识。
下面是使用Slim在PHP中实现RESTful路由的一种方法:
https://github.com/codeguy/Slim
$app = new \Slim\Slim();
$app->get('/hello/:name', function ($name) {
echo "Hello, $name";
});
$app->run();
并相应地配置服务器。
下面是另一个使用AltoRouter的例子:
https://github.com/dannyvankooten/AltoRouter
$router = new AltoRouter();
$router->setBasePath('/AltoRouter'); // (optional) the subdir AltoRouter lives in
// mapping routes
$router->map('GET|POST','/', 'home#index', 'home');
$router->map('GET','/users', array('c' => 'UserController', 'a' => 'ListAction'));
$router->map('GET','/users/[i:id]', 'users#show', 'users_show');
$router->map('POST','/users/[i:id]/[delete|update:action]', 'usersController#doAction', 'users_do');
我们还可以使用input_filter来检测请求方法,同时通过输入环境保护来提供安全性。
$request = filter_input(INPUT_SERVER, 'REQUEST_METHOD', FILTER_SANITIZE_ENCODED);
推荐文章
- 阻止人们入侵基于php的Flash游戏高分表的最佳方法是什么
- 为什么说“HTTP是无状态协议”?
- 我需要HTTP GET请求的内容类型报头吗?
- PHP子字符串提取。获取第一个'/'之前的字符串或整个字符串
- __construct函数的作用是什么?
- PHP中的异步shell执行器
- Laravel 5 -如何访问在视图存储上传的图像?
- 为什么在PHP中使用sprintf函数?
- “质量分配”在Laravel中是什么意思?
- 在逗号上爆炸字符串,并修剪每个值的潜在空格
- 如何让Chrome允许混合内容?
- 正确的方式删除cookies服务器端
- REST DELETE真的是幂等的吗?
- PHP与MySQL 8.0+错误:服务器请求身份验证方法未知的客户端
- laravel5“LIKE”对等物(雄辩的)