Ho il seguente codice sul mio sito (utilizzando PHP e Smarty) per cercare di evitare una forma di inviare nuovamente quando ho colpito f5:Evitare modulo di reinvio in php premendo F5
if ($this->bln_added == false) {
if (isset($_POST['submit'])) {
$this->obj_site->obj_smarty->assign('title', $_POST['tas_heading']);
$this->obj_site->obj_smarty->assign('desc', $_POST['tas_description']);
}
} else {
$this->obj_site->obj_smarty->assign('title', '');
$this->obj_site->obj_smarty->assign('desc', '');
unset($_POST);
}
bln_added è false per impostazione predefinita, ma cambia in vero una volta che il modulo è stato inviato correttamente. Il titolo e la descrizione delle variabili smarty vengono utilizzati nel modello per mantenere il contenuto del modulo nel caso in cui vi sia un errore dell'utente e devono modificare ciò che hanno inserito.
Se il modulo viene inviato correttamente, imposta bln_added = true, quindi il secondo bit di codice non dovrebbe solo cancellare i campi del modulo, ma anche svuotare $ _POST. Ma se premo f5 i dati del post sono ancora lì.
Qualche idea?
Grande risposta, PRG è sicuramente la strada da percorrere: http://en.wikipedia.org/wiki/Post/Redirect/Get –
Ho bisogno l'URL completo per l'intestazione? – wheresrhys
L'ho appena provato ed è in conflitto con un'intestazione impostata da qualche altra parte nell'applicazione. Non ho scritto tutto così non ho idea di dove andare per fermarlo. – wheresrhys