¿Por qué $_SERVER[‘REQUEST_METHOD’] ¿siempre consigue?

2 minutos de lectura

avatar de usuario
LeonardChallis

Estoy un poco confundido acerca de esto. ¡Espero que sea algo tremendamente obvio que me haya perdido! Tengo un formulario muy simple:

<form class="form-signin" role="form" name="login" method="POST" action="/page">
  <input type="password" name="password" />
  <input type="submit" value="Sign in" />
</form>

Nota: esta página vive en /page y se repite después del siguiente HTML:

En /page Tengo esto en la parte superior del archivo:

<?php
var_dump($_SERVER['REQUEST_METHOD']);

Por alguna razón, siempre aparece como GET cuando envíe este formulario. si tomo el action="/page" parte entonces aparece como POST. ¿Que me estoy perdiendo aqui?

Nota: Incluso cuando cargo la página, la pongo en la salida después de lo anterior var_dump() llama, todavía aparece GET.

En la línea de tiempo del inspector veo esto para la solicitud:

ingrese la descripción de la imagen aquí

  • Que es action="/page"? No parece una ruta de archivo, ¿cómo se enruta?

    – Flósculo

    22 de octubre de 2014 a las 11:16

  • Yo estaba a punto de decir. Parece que está redirigiendo después Procesando la solicitud de correos. ¿Podemos ver el index.php?

    – Flósculo

    22 de octubre de 2014 a las 11:18


  • Me funciona cuando cambias action="/page" a action="/page/"

    – Daniel

    22 de octubre de 2014 a las 11:23

  • Abra Firebug o lo que sea y díganos el referrer por el misterio GET solicitud.

    – Flósculo

    22 de octubre de 2014 a las 11:23

  • ¿Puedes especificar más sobre la configuración del servidor? apache, nginx? la configuración actual. ¿Algún apoderado?

    – nax

    22 de octubre de 2014 a las 11:26

Gracias a los comentarios a mi pregunta, encontré que la respuesta está en la configuración de Apache. Parece que, debido a que el index.php El archivo está dentro de una carpeta llamada page, apache redirigirá automáticamente a la página con una barra inclinada. Esta es la configuración predeterminada como se ve en Apache Documentación de DirectorySlash.

Como advierten contra desactivar esto, solo cambiaré la URL a lo que estoy publicando. Alternativamente, por supuesto, podría agregar un .htaccess archivo con la configuración adecuada de reglas de reescritura.\

¡Gracias por la ayuda de todos! Como nota al margen, el inspector de Safari me dejó un poco deficiente en este caso. Chrome resultó ser una opción mucho mejor para las pruebas.

  • La respuesta anterior de Dist fue la respuesta correcta, incluso si usó una variante de la misma solución.

    – Flósculo

    22 de octubre de 2014 a las 11:42

  • En realidad, no lo fue. Dijo que tenía que usar /index.php pero eso no es cierto. Además, no respondió por qué estaba sucediendo, solo una solución.

    – Leonard Challis

    22 de octubre de 2014 a las 11:46

  • También sucede en nginx. Parece enviar la solicitud a PHP como GET a menos que se proporcione la barra inclinada final. Muy extraño.

    – Dirigible

    18 de abril de 2016 a las 17:18

¿Ha sido útil esta solución?