2009-10-08 13 views

Respuesta

165
$_SERVER['REQUEST_METHOD'] 

Ver the docs. Contendrá el método de solicitud en mayúsculas (es decir, 'GET', 'HEAD', 'POST', 'PUT').

9

Mientras que el registro

$_SERVER['REQUEST_METHOD'] 

parece la opción obvia, ya que algunas de las personas que abogan por alternativas seguras Superglobales (Is using superglobals directly good or bad in PHP? y otras cuestiones similares), se puede utilizar realmente autosanitizing

filter_input(INPUT_SERVER, 'REQUEST_METHOD') 

(posiblemente con algunos interruptores de filtrado adicionales, por ejemplo, FILTER_SANITIZE_SPECIAL_CHARS).

Por supuesto, en el caso regular (GET/POST) no hay nada que higienizar, pero un buen hábito sigue siendo un buen hábito IMO.

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

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

+0

Si lo que desea es saber si es '' GET' o POST' o tal, no se requiere ninguna filtración. Sin embargo, si desea probar el método y si no coincide como se esperaba, puede recurrir al error "método HTTP no entendido" (código HTTP 405). https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#405 –

+0

@AlexisWilke como dije, 'en el caso regular (GET/POST) no hay nada que desinfectar'; OTOH, si el resultado (el valor de la variable) es, p. (y por el motivo que sea) más utilizado, como p. parte de una cadena de salida o un cuerpo de script autogenerado, y (de nuevo, por cualquier razón) si el servidor web tiene errores [(y hay errores en los servidores web)] (http://archive.apache.org/gnats/) y propenso a inyectar un método de solicitud no válido, esto podría * potencialmente * (aunque, por supuesto, es extremadamente improbable) [dar como resultado la ejecución de código arbitrario o la generación de datos] (https://xkcd.com/327/). – vaxquis

Cuestiones relacionadas