129 votes

Découvrez la méthode HTTP en PHP

Comment puis-je savoir quelle méthode (généralement GET ou POST) est utilisée pour la requête actuelle ?

229voto

Dominic Rodger Points 44489
$_SERVER['REQUEST_METHOD']

Voir la documentation. Il contiendra la méthode de requête en majuscules (par exemple 'GET', 'HEAD', 'POST', 'PUT').

18voto

vaxquis Points 2122

En vérifiant

$_SERVER['REQUEST_METHOD']

semble être le choix évident, étant donné que certaines personnes préconisent des alternatives sûres aux superglobales (Utiliser directement les superglobales est-il bon ou mauvais en PHP? et des questions similaires), on peut plutôt utiliser la désinfection automatique

filter_input( \INPUT_SERVER, 'REQUEST_METHOD', \FILTER_SANITIZE_SPECIAL_CHARS )

(vous pouvez bien sûr utiliser un autre filtre, par exemple FILTER_SANITIZE_STRING - consultez ici pour une liste complète).

Évidemment, dans le cas habituel (GET/POST), il n'y a rien à désinfecter, mais il est toujours bon d'avoir une bonne habitude à mon avis.

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

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

0 votes

Si vous voulez simplement savoir s'il s'agit de GET ou POST ou autre, aucun filtrage n'est nécessaire. Cependant, si vous voulez tester la méthode et si elle ne correspond pas comme prévu, vous pouvez revenir à l'erreur "méthode HTTP non comprise" (code HTTP 405). fr.wikipedia.org/wiki/Liste_des_codes_HTTP/405

0 votes

@AlexisWilke comme je l'ai dit, dans le cas régulier (GET/POST) il n'y a rien à nettoyer; Cependant, si le résultat (la valeur de la variable) est, par exemple (et pour n'importe quelle raison) ultérieurement utilisé comme partie d'une chaîne de sortie ou d'un corps de script généré automatiquement, et (encore une fois, pour n'importe quelle raison) si le serveur Web est buggé (et il y a des bugs dans les serveurs Web) et susceptible d'injecter une méthode de requête invalide, cela pourrait potentiellement (bien que ce soit bien sûr extrêmement improbable) entraîner l'exécution de code arbitraire ou la génération de données.

1 votes

@MichaelJaros c'est pourquoi j'ai écrit "peut-être avec (...) FILTER_SANITIZE_SPECIAL_CHARS" - mais tu as raison, ce n'est actuellement pas assez clair, je l'ai reformulé.

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