2009-10-08 7 views

Répondre

165
$_SERVER['REQUEST_METHOD'] 

Voir the docs. Il contiendra la méthode de requête en majuscule (c'est-à-dire 'GET', 'HEAD', 'POST', 'PUT').

9

Lors de la vérification

$_SERVER['REQUEST_METHOD'] 

semble le choix évident, étant donné que certaines personnes préconisent des alternatives Superglobales sûres (Is using superglobals directly good or bad in PHP? et des questions similaires), on peut effectivement utiliser autosanitizing

filter_input(INPUT_SERVER, 'REQUEST_METHOD') 

(éventuellement avec certains commutateurs de filtrage supplémentaires, par exemple FILTER_SANITIZE_SPECIAL_CHARS) à la place.

Bien sûr, dans le cas normal (GET/POST) il n'y a rien à désinfecter, mais une bonne habitude est toujours une bonne habitude IMO.

http://php.net/manual/en/reserved.variables.server.php

http://php.net/manual/en/function.filter-input.php

+0

Si vous voulez juste savoir s'il est '' GET' ou POST' ou tel, aucun filtrage est nécessaire. Cependant, vous voulez tester la méthode et, si elle ne correspond pas, vous pouvez revenir à l'erreur "méthode HTTP non comprise" (code HTTP 405). https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#405 –

+0

@AlexisWilke Comme je l'ai dit, 'dans le cas normal (GET/POST) il n'y a rien à désinfecter'; OTOH, si le résultat (la valeur de la variable) est, par ex. (et pour une raison quelconque) utilisé par la suite, par ex. partie d'une chaîne de sortie ou d'un corps de script autogénéré, et (encore une fois, pour une raison quelconque) si le serveur web est buggé [(et il y a des bogues dans les serveurs web)] (http://archive.apache.org/gnats/) et enclin à injecter une méthode de requête invalide, cela pourrait * potentiellement * (bien que ce soit évidemment extrêmement improbable) [aboutir à l'exécution de code arbitraire ou à la génération de données] (https://xkcd.com/327/). – vaxquis

Questions connexes