Question Détection du type de requête en PHP (GET, POST, PUT ou DELETE)


Comment puis-je détecter quel type de requête a été utilisé (GET, POST, PUT ou DELETE) en PHP?


778
2017-12-11 11:31


origine


Réponses:


En utilisant

$_SERVER['REQUEST_METHOD']

Exemple

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

Pour plus de détails s'il vous plaît voir le documentation pour la variable $ _SERVER.


1100
2017-12-11 11:32



REST en PHP peut être fait assez simple. Créer http://example.com/test.php (décrite ci-dessous). Utilisez cette option pour les appels REST, par ex. http://example.com/test.php/testing/123/hello. Cela fonctionne avec Apache et Lighttpd hors de la boîte, et aucune règle de réécriture n'est nécessaire.

<?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;
}

203
2018-05-22 10:52



Détecter la méthode HTTP ou appelée REQUEST METHOD peut être fait en utilisant l'extrait de code suivant.

$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
}

Vous pouvez également le faire en utilisant un switch si vous préférez cela sur le if-else déclaration.

Si une méthode autre que GET ou POST est requis dans une forme html, ceci est souvent résolu en utilisant un champ caché dans le formulaire.

<!-- 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>

Pour plus d'informations sur les méthodes HTTP, je voudrais me référer à la question StackOverflow suivante:

PUT et DELETE du protocole HTTP et leur utilisation en PHP


15
2017-10-27 11:16



Comme il s'agit de REST, il ne suffit pas d'obtenir la méthode de requête du serveur. Vous devez également recevoir les paramètres d'itinéraire RESTful. La raison pour séparer les paramètres RESTful et les paramètres GET / POST / PUT est qu'une ressource doit avoir sa propre URL unique pour l'identification.

Voici une façon d'implémenter des routes RESTful en PHP en utilisant Slim:

https://github.com/codeguy/Slim

$app = new \Slim\Slim();
$app->get('/hello/:name', function ($name) {
  echo "Hello, $name";
});
$app->run();

Et configurez le serveur en conséquence.

Voici un autre exemple utilisant 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');

7
2017-12-16 12:32



Vous pouvez utiliser getenv fonctionner et ne pas avoir à travailler avec un $_SERVER variable:

getenv('REQUEST_METHOD');

Plus d'informations:

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


6
2018-03-04 12:35



Nous pouvons également utiliser le filtre input_filter pour détecter la méthode de demande tout en assurant la sécurité grâce à l'assainissement des entrées.

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

5
2018-05-13 03:55



C'est très simple il suffit d'utiliser $ _SERVER ['REQUEST_METHOD'];

Exemple:

<?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;
}
?>

4
2018-04-13 12:52



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

De cette façon, vous pouvez également atteindre dans zend framework 2 également. Merci.


3
2017-07-06 11:11



Quand une méthode a été demandée, elle aura un array. Alors, vérifiez simplement avec count().

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

3v4l.org/U51TE


-1
2017-09-06 13:17