복붙노트

PHP (GET, POST, PUT 또는 DELETE)에서 요청 유형 감지

PHP

PHP (GET, POST, PUT 또는 DELETE)에서 요청 유형 감지

PHP에서 어떤 요청 유형 (GET, POST, PUT 또는 DELETE)을 사용했는지 어떻게 알 수 있습니까?

해결법

  1. ==============================

    1.사용하여

    사용하여

    $_SERVER['REQUEST_METHOD']
    
    if ($_SERVER['REQUEST_METHOD'] === 'POST') {
         // The request is using the POST method
    }
    

    자세한 내용은 $ _SERVER 변수에 대한 설명서를 참조하십시오.

  2. ==============================

    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. ==============================

    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. ==============================

    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. ==============================

    5.getenv 함수를 사용할 수 있으며 $ _SERVER 변수로 작업 할 필요가 없습니다.

    getenv 함수를 사용할 수 있으며 $ _SERVER 변수로 작업 할 필요가 없습니다.

    getenv('REQUEST_METHOD');
    

    더 많은 정보:

    http://php.net/manual/en/function.getenv.php

  6. ==============================

    6.input_filter를 사용하여 요청 방법을 감지하면서 입력 위생을 통해 보안을 제공 할 수도 있습니다.

    input_filter를 사용하여 요청 방법을 감지하면서 입력 위생을 통해 보안을 제공 할 수도 있습니다.

    $request = filter_input(INPUT_SERVER, 'REQUEST_METHOD', FILTER_SANITIZE_ENCODED);
    
  7. ==============================

    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. ==============================

    8.

    $request = new \Zend\Http\PhpEnvironment\Request();
    $httpMethod = $request->getMethod();
    

    이 방법으로 젠드 프레임 워크 2에서도 달성 할 수 있습니다. 감사.

  9. ==============================

    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. ==============================

    10.메소드가 요청되면 배열을 갖습니다. 따라서 count ()로 간단히 확인하십시오.

    메소드가 요청되면 배열을 갖습니다. 따라서 count ()로 간단히 확인하십시오.

    $m=['GET'=>$_GET,'POST'=>$_POST];
    foreach($m as$k=>$v){
        echo count($v)?
        $k.' was requested.':null;
    }
    

    3v4l.org/U51TE

  11. ==============================

    11.검색어 문자열 데이터 (예 : www.example.com?id=2&name=r)를 얻을 수 있습니다.

    검색어 문자열 데이터 (예 : www.example.com?id=2&name=r)를 얻을 수 있습니다.

    $ _GET [ 'id'] 또는 $ _REQUEST [ 'id']를 사용하여 데이터를 가져와야합니다.

    게시물 데이터는

    와 같은 양식을 의미합니다. $ _POST 또는 $ _REQUEST를 사용해야합니다.

  12. from https://stackoverflow.com/questions/359047/detecting-request-type-in-php-get-post-put-or-delete by cc-by-sa and MIT license