2010-07-13 11 views
5

Creo que hay un error en mi código, o mi PHP o Apache está configurado incorrectamente.No se devuelven datos POST cuando está presente el tipo de entrada oculta

Cuando envío un formulario con un campo oculto en ella, que no se deje ningún dato en mi array $ _POST ...

cuando comento el campo oculto en mi código, se devuelven los datos de POST correctamente ...

HTML FORM

<form action='/utils/login.php ' method='POST'> 
<table> 
    <tr> 
     <td colspan='2'> 
      Login 
     </td> 
    </tr> 
    <tr> 
     <td> 
      Username 
     </td> 
     <td> 
      <input type='text' name='userid' value='' size='12' /> 
     </td> 
    </tr> 
    <tr> 
     <td> 
      Password 
     </td> 
     <td> 
      <input type='password' name='password' size='12' /> 
     </td> 
    </tr> 
    <tr> 
     <td> 
      <input type='hidden' name='formtype' value='login' /> 
     </td> 
    </tr> 
    <tr> 
     <td> 
      <input type='submit' value='Submit' /> 
     </td> 
    </tr> 
</table></form> 

Este es el código que está procesando en PHP ...

foreach ($_POST as $var => $value) { 
    echo "$var = $value<br>"; 
} 

Estoy usando PHP 5 y Apache 2.2 en mi servidor.

¿Alguna idea?

EDITAR ...

he reducido a esto ...

$command = $_POST['formtype']; 

Cuando quité el signo @ de mi $ _POST, que estoy recibiendo el siguiente error ...

Aviso: Undefined variable: FormType en C: \ Webroot \ utils \ login.php en la línea 17

Si comento hacia fuera de esa línea, los datos POST se introduce en el programa sin ningún problema.

+6

cerraste tu ''

? No veo la etiqueta de cierre. – BoltClock

+2

No necesita otra celda de tabla para el campo oculto ... – thomasfedb

+0

Sí. Mi página tenía la etiqueta de cierre dentro de ella. Había olvidado pegarlo en la publicación SO. Ese no es el problema con la forma. –

Respuesta

2

Yo sugeriría cambiar el código que está utilizando para mostrar el contenido de $_POST a una sola llamada:

print_r($_POST); 

En cualquier momento se está mostrando todo el contenido de una matriz, esto es mejor que un bucle w/echo, ya que mostrará todos los valores en cada nivel de la matriz.

Además, como se mencionó en un comentario, asegúrese de cerrar el formulario en el html.

+0

Gracias. No creo que esa sea la razón por la cual la página no devuelve ningún dato de publicación. Recuerda que cuando comento el elemento por completo, los datos de POST se devuelven como se esperaba. –

+0

¿Por qué esta respuesta obtuvo 3 votos? – mok

2

Nunca cerró su etiqueta <form>.

Y ahora veo que alguien me ganó por una milla en los comentarios. Aún así, esta es la respuesta correcta.

+0

Veo que la etiqueta del formulario se ha cerrado. ¿Hay algo malo en eso? Tengo el mismo problema, así que lea su respuesta. – Jnanaranjan

2

¿Ha intentado sacar la entrada oculta de la tabla y colocarla justo después de la etiqueta de apertura del formulario?

También puede utilizar:

var_dump($_POST); 

... Para ver las variables de correos.

Además, si cualquiera de las entradas se crean dinámicamente o pueden estar ausentes de las variables POST ... que puede utilizar:

variable = 'default'; 
if(isset($_Post['variable'])) $variable = $_POST['variable']; 

... para ajustar dinámicamente las variables que podrían estar allí o no.

+0

Poner las entradas ocultas directamente después de que la etiqueta del formulario solucionó un problema similar que estaba teniendo ... ¡gracias! –

0

favor, intente con:

<form action="..." method="post" enctype="application/x-www-form-urlencoded"> 
1

he cambiado mi forma de trabajar con la ramita. La forma modificada no enviaba el valor de entrada oculto con la publicación. En caso de que alguien tenga el mismo problema, lo resolví haciendo lo siguiente.

La línea original era:

<input hidden name='foo[{{ loop.index }}][id]' value='{{id}}' /> 

me lo vendió al hacer type = 'oculto':

<input type='hidden' name='foo[{{ loop.index }}][id]' value='{{id}}' /> 
Cuestiones relacionadas