- Home
- Categorie
- Coding e Sistemistica
- PHP
- Cancellare dati $_POST
-
Cancellare dati $_POST
Ciao a tutti,
ho un problema con un form html con cui trasmetto dati in POST ad una pagina php...il problema è che riaggiornando la pagina compie nuovamente le operazione in quanto riceve nuovamente i dati dall'array $_POST
Come posso fare per evitare questo? Come svuotare $_POST? Ho già provato con unset ma niente
-
L'unica soluzione è quella di fare uno script intermedio che gestisce i dati $_POST e alla fine fa un redirect alla pagina finale. Quindi in totale sono 3 script:
- form.php
- gestione.php (con header() finale)
- pagina_finale.php
-
Io sto lavorando nella stessa pagina,se vengono passate le variabili le gestisco altrimenti stampo il form. Perchè l'unset o $_POST = Array() non funzionano?
-
Mettimi qui il tuo script...
-
Ti metto solo la parte interessata senza ammorbarti di html...
<form method="POST" action=""> <b>Nome categoria: </b><input type="text" name="nome_cat" value=""></input> <input type="submit" name="action" value="Inserisci"></input> </form> <?php if(isset($_POST['action']) and $_POST['action']=="Inserisci"){ $conn = new mysqli($host_name, $user_name, $password, $data_name); $query = "INSERT INTO CATEGORIA(nome_cat) VALUES('".$_POST['nome_cat']."')"; $result=$conn->query($query); $conn->close(); if($result){ msg( "La categoria è stata inserita correttamente.","success"); } else{ msg( "L'operazione non è andata a buon fine,controlla la connessione e riprova.","danger"); } } ?>
msg() è una funzione che ho creato per stampare messaggi di avviso in base al tipo che passo (success,danger ecc....). Se una volta inserito un nuovo record clicco f5 per aggiornare la pagina ne inserisce un altro perchè rileva ovviamente sempre i dati POST di cui parlavo
-
Pensavo di trovare errori nel tuo codice dato che mi avevi parlato anche della funzione unset() su variabili.
Purtroppo devo dirti che l'unica soluzione è quella del triplo script (che puoi ridurlo a due), in quanto la variabile $_POST è superglobale e quindi sempre presente.
Una soluzione riportata qui è anche con le variabili di sessione http://stackoverflow.com/questions/11765144/unset-post-variables-after-form-submission ma io preferisco la soluzione con lo script intermedio e la funzione header() finale.
-
Quindi,scusa se chiedo dettagli,dovrei creare una pagina per il form che potrei far coincidere con quella di conferma delle operazioni(ad esempio,messaggio di errore o di operazione riuscita) e poi una dove invece controllo le variabili con l'header (location:.....) alla fine così le variabili POST restano isolate lì...giusto?
-
Giusto. Magari le varibili di ritorno per il messaggio di errore o riuscita le passi via $_GET nell'URL di header('Location....').