¿$_POST vacía?


Hace unos días estuve intentando terminar un trabajo con unas páginas donde un formulario enviaba los datos hacia el servidor con el método POST y me encontré conque en el código PHP la variable $_POST estaba vacía. Por lo tanto no podía tomar ningún dato del formulario. Me tenía medio desesperado!

print_r( $_POST ) devolvía: Array() solamente. ¿Cuál era el problema? ¿Fallaba el servidor? ¿Tenía que ver con la versión de PHP y/o Apache?

Pues no eran las versiones, no fallaba el servidor. Fijándome en los logs del servidor había un mensaje que llamó mi atención. O sea, cómo es el formato de logs de apache? A ver, tenemos primero el host o IP de la máquina que hace la petición, luego la fecha y hora, luego el comando o la petición, y después unos números raros?

Qué son esos números?

HTTP/1.1″ 200 16

el 200 indica OK (HTTP 200) y el 16?? Bueno, en realidad el segundo número todavía no sé qué significa y no lo necesitamos en este caso.

Resulta que la parte del POST la vi así:

HTTP/1.1″ 301 326

Mmmm, el mensaje devuelto era 301. Y qué significa 301? -> 301 Moved Permanently

O sea que la página a la que quería acceder había sido movida permanentemente. Y en cierta forma tenía razón ya que no era a esa dirección a la que quería hacer el post, sino que era a un archivo.

Lo que pasaba era que en el action del formulario había puesto algo como lo siguiente:

action=”https://www.dominio.com/registro/formulario

Cuando en realidad el archivo donde iba a aplicar el POST era en https://www.dominio.com/registro/formulario/index.php

Entonces la solución a ese problema sería especificar la dirección completa hacia el archivo y no esperar que Apache redirecione un post hacia el index.php ya que según parece las reglas son que eso no se haga.

Por lo tanto si te está pasando lo mismo verifica que en el action hayas puesto la dirección completa con archivo incluido y todo y no solamente un directorio esperando que Apache entienda qué archivo usar de ahí (aunque parezca obvio que deba usar el index, parece que así no trabaja y no lo hace, por eso el error de que fue movido permanentemente).

Saludos.

  1. #1 por Richzendy el febrero 20, 2011 - 10:31 am

    Has pensado en usar un framework como symfony? te lo recomiendo, incluso alguno como kumbiaphp.

  2. #2 por anyeos el febrero 22, 2011 - 11:13 pm

    Siempre pensé en usar un framework pero las veces que quise intentarlo había que estudiar e instalar tantas cosas que preferí dejarlo como estaba. Porque no tenía el tiempo necesario para eso y además porque no necesitaba funciones tan avanzadas. Debería probar esos frameworks que mencionas ya que los que intenté ver, si bien traían muchas funciones interesantes y facilidades, tenían ciertas limitaciones que superarlas era casi como programar una biblioteca completa sólo para ejecutar un comando tan simple como “ls -a”. Por lo tanto estaba limitado a lo que el framework incluyera y eso no me gustaba.
    Así que como ves, iba a ser más complicado usar un framework que programar las páginas directamente. De todos modos yo no necesitaba funciones tan avanzadas más bien necesitaba un acceso al sistema. Cosa que la mayoría de los frameworks tratan de evitar al máximo.
    Por ejemplo si quiero acceder a /etc/passwd, los frameworks normalmente intentan evitar eso al máximo, y bueno eso me traía más problemas que soluciones.

    De todos modos gracias, voy a ponerme a investigar sobre esos que mencionas.

    Saludos.

  3. #3 por juancamilo el marzo 8, 2011 - 3:45 pm

    esto me ocurre a mi con netbeans tu conque IDE trabajaste

  4. #4 por anyeos el julio 30, 2012 - 10:49 pm

    Disculpa no recuerdo haber visto tu mensaje (seguro lo vi pero lo dejé para responder para más tarde y me olvidé). No trabajo con un IDE muy especializada trabajo con Geany y a mano. También utilizo varias herramientas separadas como el mismo navegador Firefox con algún plugin como firebug.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: