1074 votes

Détecter le type de requête en PHP (GET, POST, PUT ou DELETE)

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

27 votes

N'oubliez pas HEAD =) (ainsi que OPTIONS, TRACE et CONNECT, mais je ne pense pas que PHP les reçoive jamais).

5 votes

Et si PATCH ?

2 votes

PATCH fonctionne également très bien. $_SERVER['REQUEST_METHOD'] === 'PATCH'

1voto

Thielicious Points 1712

Lorsqu'une méthode a été demandée, elle aura une étiquette array . Il suffit donc de vérifier auprès de count() .

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

3v4l.org/U51TE

1voto

mahfuz Points 424

J'ai utilisé ce code. Il devrait fonctionner.

function get_request_method() {
    $request_method = strtolower($_SERVER['REQUEST_METHOD']);

    if($request_method != 'get' && $request_method != 'post') {
        return $request_method;
    }

    if($request_method == 'post' && isset($_POST['_method'])) {
        return strtolower($_POST['_method']);
    }

    return $request_method;
}

Le code ci-dessus fonctionnera avec REST calls et travaillera également avec html form

<form method="post">
    <input name="_method" type="hidden" value="delete" />
    <input type="submit" value="Submit">
</form>

-5voto

Vous pouvez obtenir n'importe quelle chaîne de données de requête, c'est-à-dire www.example.com?id=2&name=r

Vous devez obtenir des données en utilisant $_GET['id'] o $_REQUEST['id'] .

Afficher les données signifie comme un formulaire <form action='' method='POST'> vous devez utiliser $_POST o $_REQUEST .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X