2010-07-13 11 views
5

Penso che ci sia un errore nel mio codice, o il mio PHP o Apache è impostato in modo errato.Nessun dato POST restituito quando è presente il tipo di input nascosto

Quando invio un modulo con un campo nascosto in esso, non ho ricevuto alcun dato nei miei $ array _POST ...

Quando io commento il campo nascosto nel mio codice, i dati POST viene restituito correttamente ...

FORM HTML

<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> 

Qui è il codice che sta elaborando in PHP ...

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

Sto usando PHP 5 e Apache 2.2 sul mio server.

Qualche idea?

EDIT ...

ho ristretto la scelta a questo ...

$command = $_POST['formtype']; 

Quando ho rimosso il simbolo @ dal mio $ _POST, sto ottenendo il seguente errore ...

Avviso: Undefined variable: FormType in C: \ webroot \ utils \ login.php on line 17

Se io commento che la linea, i dati POST viene passato nel programma senza problemi.

+6

hai chiuso il tuo ''

? Non vedo il tag di chiusura. – BoltClock

+2

Non è necessario aggiungere una cella di tabella per il campo nascosto ... – thomasfedb

+0

Sì. La mia pagina aveva il tag di chiusura al suo interno. Mi ero dimenticato di incollarlo nel post SO. Questo non è il problema con il modulo. Aggiornamento –

risposta

2

vorrei suggerire cambiando il codice che si utilizza per visualizzare il contenuto di $_POST ad una singola chiamata:

print_r($_POST); 

Ogni volta che si sta visualizzando l'intero contenuto di un array, questo è meglio di un ciclo w/echo, poiché mostrerà ogni valore ad ogni livello dell'array.

Inoltre, come è stato menzionato in un commento, assicurarsi di chiudere il modulo in html.

+0

Grazie. Non penso che sia la ragione per cui la pagina non restituisce alcun dato post. Ricordare che quando commento completamente l'elemento , i dati di ritorno POST vengono restituiti come previsto. –

+0

Perché questa risposta ha ottenuto 3 voti ?! – mok

2

Non hai mai chiuso il tag <form>.

E ora vedo che qualcuno mi ha battuto per un miglio nei commenti. Eppure, questa è la risposta giusta.

+0

Posso vedere che il tag form è stato chiuso. C'è qualcosa di sbagliato in esso. Sto avendo lo stesso problema, quindi leggi la tua risposta. – Jnanaranjan

2

Hai provato a rimuovere l'input nascosto dal tavolo e a posizionarlo subito dopo il tag del modulo di apertura?

È anche possibile utilizzare:

var_dump($_POST); 

... per visualizzare le variabili POST.

Inoltre, se tutti gli ingressi vengono dinamicamente creati o potrebbero essere mancanti dalle variabili POST ... è possibile utilizzare:

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

... per impostare in modo dinamico le variabili che potrebbero essere lì o no.

+0

Mettere gli input nascosti direttamente dopo che il tag form ha risolto un problema simile che stavo avendo .. grazie! –

0

Si prega di provare con:

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

ho cambiato il mio modulo per lavorare con il ramoscello. La forma modificata non inviava il valore di input nascosto con il post. Nel caso qualcuno abbia lo stesso problema, l'ho risolto facendo quanto segue.

La linea originale era:

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

ho venduta facendo type = 'nascosto':

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