PHP (GET, POST, PUT 또는 DELETE)에서 요청 유형 감지
PHPPHP (GET, POST, PUT 또는 DELETE)에서 요청 유형 감지
PHP에서 어떤 요청 유형 (GET, POST, PUT 또는 DELETE)을 사용했는지 어떻게 알 수 있습니까?
해결법
-
==============================
1.사용하여
사용하여
$_SERVER['REQUEST_METHOD']
if ($_SERVER['REQUEST_METHOD'] === 'POST') { // The request is using the POST method }
자세한 내용은 $ _SERVER 변수에 대한 설명서를 참조하십시오.
-
==============================
2.PHP에서 REST는 매우 간단하게 수행 할 수 있습니다. http://example.com/test.php를 만듭니다 (아래에서 설명). REST 호출에 사용합니다 (예 : http://example.com/test.php/testing/123/hello. 이것은 Apache와 Lighttpd와 함께 사용할 수 있으며 다시 쓰기 규칙은 필요하지 않습니다.
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; }
-
==============================
3.HTTP 메소드 또는 그렇게 요청 메소드를 감지하는 것은 다음 코드 스니 j을 사용하여 수행 할 수 있습니다.
HTTP 메소드 또는 그렇게 요청 메소드를 감지하는 것은 다음 코드 스니 j을 사용하여 수행 할 수 있습니다.
$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에서의 사용법
-
==============================
4.이것은 REST에 관한 것이므로 서버에서 요청 메소드를받는 것만으로는 충분하지 않습니다. 또한 RESTful 라우트 매개 변수를 수신해야합니다. RESTful 매개 변수와 GET / POST / PUT 매개 변수를 구분하는 이유는 자원이 식별을 위해 고유 한 URL을 가져야하기 때문입니다.
이것은 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');
-
==============================
5.getenv 함수를 사용할 수 있으며 $ _SERVER 변수로 작업 할 필요가 없습니다.
getenv 함수를 사용할 수 있으며 $ _SERVER 변수로 작업 할 필요가 없습니다.
getenv('REQUEST_METHOD');
더 많은 정보:
http://php.net/manual/en/function.getenv.php
-
==============================
6.input_filter를 사용하여 요청 방법을 감지하면서 입력 위생을 통해 보안을 제공 할 수도 있습니다.
input_filter를 사용하여 요청 방법을 감지하면서 입력 위생을 통해 보안을 제공 할 수도 있습니다.
$request = filter_input(INPUT_SERVER, 'REQUEST_METHOD', FILTER_SANITIZE_ENCODED);
-
==============================
7.예:
예:
<?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; } ?>
-
==============================
8.
$request = new \Zend\Http\PhpEnvironment\Request(); $httpMethod = $request->getMethod();
이 방법으로 젠드 프레임 워크 2에서도 달성 할 수 있습니다. 감사.
-
==============================
9.핵심 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; } ?>
-
==============================
10.메소드가 요청되면 배열을 갖습니다. 따라서 count ()로 간단히 확인하십시오.
메소드가 요청되면 배열을 갖습니다. 따라서 count ()로 간단히 확인하십시오.
$m=['GET'=>$_GET,'POST'=>$_POST]; foreach($m as$k=>$v){ echo count($v)? $k.' was requested.':null; }
3v4l.org/U51TE
-
==============================
11.검색어 문자열 데이터 (예 : www.example.com?id=2&name=r)를 얻을 수 있습니다.
검색어 문자열 데이터 (예 : www.example.com?id=2&name=r)를 얻을 수 있습니다.
$ _GET [ 'id'] 또는 $ _REQUEST [ 'id']를 사용하여 데이터를 가져와야합니다.
게시물 데이터는
from https://stackoverflow.com/questions/359047/detecting-request-type-in-php-get-post-put-or-delete by cc-by-sa and MIT license
'PHP' 카테고리의 다른 글
PHP의 MVC 뷰 이해하기 (0) | 2018.09.09 |
---|---|
PHP로 메모리를 비우는 것이 더 낫다 : unset () 또는 $ var = null (0) | 2018.09.09 |
코드 보안을 위해 PDO와 암호 해싱을 어떻게 사용합니까? [닫은] (0) | 2018.09.09 |
PHP는 - 내가 Location () 헤더를 호출 한 후 exit ()를 호출해야합니까? (0) | 2018.09.09 |
구문 분석 오류 : 구문 오류, PHP 코드에서 예기치 않은 파일 끝 (0) | 2018.09.09 |