Unk*_*ech 880 php http request
如何在PHP中检测使用了哪种请求类型(GET,POST,PUT或DELETE)?
gnu*_*nud 1255
通过使用
$_SERVER['REQUEST_METHOD']
Run Code Online (Sandbox Code Playgroud)
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// The request is using the POST method
}
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请参阅$ _SERVER变量的文档.
neu*_*242 216
PHP中的REST可以非常简单地完成.创建http://example.com/test.php(概述如下).用于REST调用,例如http://example.com/test.php/testing/123/hello.这适用于Apache和Lighttpd开箱即用,不需要重写规则.
<?php
$method = $_SERVER['REQUEST_METHOD'];
$request = explode("/", substr(@$_SERVER['PATH_INFO'], 1));
switch ($method) {
case 'PUT':
do_something_with_put($request);
break;
case 'POST':
do_something_with_post($request);
break;
case 'GET':
do_something_with_get($request);
break;
default:
handle_error($request);
break;
}
Run Code Online (Sandbox Code Playgroud)
Pet*_*ter 19
REQUEST METHOD可以使用以下代码片段来检测所谓的HTTP方法.
$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
}
Run Code Online (Sandbox Code Playgroud)
switch如果你喜欢这个,你也可以使用a 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>
Run Code Online (Sandbox Code Playgroud)
有关HTTP方法的更多信息,我想参考以下StackOverflow问题:
由于这是关于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();
Run Code Online (Sandbox Code Playgroud)
并相应地配置服务器.
这是使用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');
Run Code Online (Sandbox Code Playgroud)
我们还可以使用input_filter来检测请求方法,同时还通过输入卫生提供安全性.
$request = filter_input(INPUT_SERVER, 'REQUEST_METHOD', FILTER_SANITIZE_ENCODED);
Run Code Online (Sandbox Code Playgroud)
您可以使用getenv函数,而不必使用$_SERVER变量:
getenv('REQUEST_METHOD');
Run Code Online (Sandbox Code Playgroud)
更多信息:
http://php.net/manual/en/function.getenv.php
在核心 php 中你可以这样做:
<?php
$method = $_SERVER['REQUEST_METHOD'];
switch ($method) {
case 'GET':
//Here Handle GET Request
echo 'You are using '.$method.' Method';
break;
case 'POST':
//Here Handle POST Request
echo 'You are using '.$method.' Method';
break;
case 'PUT':
//Here Handle PUT Request
echo 'You are using '.$method.' Method';
break;
case 'PATCH':
//Here Handle PATCH Request
echo 'You are using '.$method.' Method';
break;
case 'DELETE':
//Here Handle DELETE Request
echo 'You are using '.$method.' Method';
break;
case 'COPY':
//Here Handle COPY Request
echo 'You are using '.$method.' Method';
break;
case 'OPTIONS':
//Here Handle OPTIONS Request
echo 'You are using '.$method.' Method';
break;
case 'LINK':
//Here Handle LINK Request
echo 'You are using '.$method.' Method';
break;
case 'UNLINK':
//Here Handle UNLINK Request
echo 'You are using '.$method.' Method';
break;
case 'PURGE':
//Here Handle PURGE Request
echo 'You are using '.$method.' Method';
break;
case 'LOCK':
//Here Handle LOCK Request
echo 'You are using '.$method.' Method';
break;
case 'UNLOCK':
//Here Handle UNLOCK Request
echo 'You are using '.$method.' Method';
break;
case 'PROPFIND':
//Here Handle PROPFIND Request
echo 'You are using '.$method.' Method';
break;
case 'VIEW':
//Here Handle VIEW Request
echo 'You are using '.$method.' Method';
break;
Default:
echo 'You are using '.$method.' Method';
break;
}
?>
Run Code Online (Sandbox Code Playgroud)
“true 的本机来源”是$_SERVER全局变量。请求方法保存在“REQUEST_METHOD”键下。
检查 $_SERVER 数组
$_SERVER['REQUEST_METHOD']
PHP 方法
但是您可以使用很多变通方法来获取该方法。像filter_input一样:
filter_input(INPUT_SERVER, 'REQUEST_METHOD', FILTER_SANITIZE_ENCODED);
库 或者您使用外部库,例如:
Symfony\Component\HttpFoundation\Request\Zend\Http\PhpEnvironment\Request但最简单的方法是使用:$_SERVER['REQUEST_METHOD']。
非常简单只需使用$ _SERVER ['REQUEST_METHOD'];
例:
<?php
$method = $_SERVER['REQUEST_METHOD'];
switch ($method) {
case 'GET':
//Here Handle GET Request
break;
case 'POST':
//Here Handle POST Request
break;
case 'DELETE':
//Here Handle DELETE Request
break;
case 'PUT':
//Here Handle PUT Request
break;
}
?>
Run Code Online (Sandbox Code Playgroud)
$request = new \Zend\Http\PhpEnvironment\Request();
$httpMethod = $request->getMethod();
Run Code Online (Sandbox Code Playgroud)
通过这种方式,您还可以在zend框架2中实现.谢谢.
| 归档时间: |
|
| 查看次数: |
414503 次 |
| 最近记录: |