2009-09-03 21 views
258

Duplicar posible:
PHP detecting request type (GET, POST, PUT or DELETE)Comprobar si una petición es GET o POST

Esto debería ser una tarea fácil.

Tengo un script, y en el script quiero determinar si la solicitud llega a través del método GET o POST.

¿Cuál es la forma correcta de hacerlo?

estoy pensando en usar algo como esto

if (isset($_POST)) { 
    // do post 
} else { 
    // do get 
} 

Pero en el fondo de mi corazón no me siento que este es el camino correcto. ¿Alguna idea?

+0

Por qué no puedes tratar $ _REQUEST [ "variable_name"] si orienta las variables del proceso independientemente del tipo de petición? –

+3

@AnoopPete - porque eso no es lo que se estaba preguntando. $ _REQUEST aceptará GET, POST, PUT, DELETE (cualquier cosa). No solo es esta práctica terrible, sino que también puede generar riesgos de seguridad. Imagine que su lógica es simplemente esperar un método POST de formulario, pero permite que se acepten todos los métodos. Eso podría tener consecuencias nefastas en las manos equivocadas. – Marcus

+0

intente utilizar esto, le ayudará a cambiar la forma de get get o post if ($ _REQUEST ["name"] || $ _REQUEST ["age"]) { echo "Bienvenido". $ _REQUEST ['nombre']. "
"; eco "Tú eres". $ _REQUEST ['age']. "años de edad"; exit(); } – sarvesh

Respuesta

639

Mejor uso $_SERVER['REQUEST_METHOD']:

if ($_SERVER['REQUEST_METHOD'] === 'POST') { 
    // … 
} 
+0

@Gumbo necesitamos '===', ¿qué pasará si usé '==' –

+3

Puede usar '===' * o * '=='. Lo primero es solo una buena práctica, ya que comprueba si las variables son "idénticas". (Por ejemplo: '5 == '5'' es' verdadero', pero '5 ===' 5'' es' falso') – Justin

+2

Considere también devolver 405 si no es ni GET ni POST. if ($ _SERVER [ 'REQUEST_METHOD'] === 'post') {// no publicar } elseif ($ _SERVER [ 'REQUEST_METHOD'] === 'Get') {// hacer llegar } else { http_response_code (405); morir(); } –

Cuestiones relacionadas