> Faqs > El extraño caso de la matriz POST desaparecida en PHP

El extraño caso de la matriz POST desaparecida en PHP

En toda mi trayectoria como investigador informático nunca encontré nada tan misterioso como lo que me dispongo a contar. Era en principio algo trivial, un formulario que se autopasa (por el método POST) los datos de un formulario, que recogía para su posterior tratamiento. Esta es la cabecera de definición del formulario:

<form action="visitas.html” method=" post=""> ¡Un momento! ¿HTML? En realidad no es así. Se trata de "visitas.php", pero está redireccionado por medio de .htaccess, camuflando la verdadera extensión del archivo. Esa redirección funciona perfectamente en otras páginas del sitio, y en esta página del formulario también. Sin embargo, cuando se rellenaban las casillas del formulario y se pulsa el botón de enviar, la página se comporta como si no se hubiera enviado nada.</form>
Responder la pregunta
Editar Hacer otra preguntaPreguntar

Respuestas

Me atorespondo esta pregunta, pues ya he resuelto el problema. Odio las labores de seguimiento, aunque con esta profesión a menudo son inevitables. Coloqué al principio del script un print_r($_POST), para ver qué estaba pasando. Resultado: array(). Es decir, los datos no llegaban a su destino. La matriz con los datos del formulario desaparecía por el camino. ¿Cómo era posible? En principio no supe dónde buscar. Estaba todo ahí, en ese simple fichero. Todo era correcto, se enviaban los datos, pero no se recibían. Tras una ardua investigación descubrí que el formulario enviaba realmente los datos a http://midominio.com/visitas.html, y sin embargo se intentaban recibir en http://www.midominio.com/visitas.html (la extensión html o php aquí no tiene trascendencia). Es decir, había otro redireccionamiento, aparte del especificado en .htaccess, cuyo objetivo era añadir la triple w, y era en ese proceso donde desaparecía la matriz. En algún sitio leí que alguien pensaba que era un bug de PHP, algo que no me importó, pues lo que yo necesitaba no era echarle la culpa a alguien, sino encontrar una solución. Una vez localizado el problema, el resto fue sencillo: eliminé el indeseado redireccionamiento. Sustituí la definición del formulario por: <form action="http://www.midominio.com/visitas.html” method="post"> De esa manera, al especificar las www en el dominio, como por arte de magia, los datos aparecieron donde debían estar. Para analizar los redireccionamientos que están produciéndose en el acceso a una web, recomiendo el complemento de Firefox Live HTTP Headers

Rafael Muñoz Polonio