Ho cercato molti post qui e altrove ma non riesco a trovare una soluzione al mio problema. Ho una pagina che mostra le voci del database: database.php. Queste voci possono essere filtrate con un modulo. Quando li filtro e visualizzo solo quelli a cui sono interessato posso fare clic su una voce (come collegamento) che mi porta a quella pagina di voci (tramite php GET). Quando sono su quella pagina di voci (ad esempio, "view.php? Id = 1") e premo il pulsante Indietro (torna a database.php), il modulo filtro richiede di confermare il nuovo invio del modulo. C'è un modo per prevenire questo?Prevent Modulo di nuovo invio premendo il pulsante Indietro
qui sono alcuni (semplificate) esempi di codice:
database.php:
<form>
<select>
<option>1</option>
<option>2
<option>
</select>
<input type="submit" name="apply_filter" />
</form>
<?php
if (isset($_POST[ "apply_filter" ])) { // display filtered entries
$filter = $_POST[ "filter" ];
$q = "Select * from table where col = '" . $filter . "'";
$r = mysql_query($q);
} else { // display all entries
$q = "Select * from table";
$r = mysql_query($q);
}
while ($rec = mysql_fetch_assoc($r)) {
echo "<a href='view.php?id=" . $rec[ "id" ] . "'>" . $rec[ "name" ] . "</a><br />"; // this is where the link to the view.php page is...
}
?>
Ora come detto, se clicco sul link, mi prende a "view.php? id = qualunque". In quella pagina, ottengo solo l'ID dall'URL per visualizzare tale singola voce:
view.php:
<?php
$id = $_GET[ "id" ];
$q = "Select * from table where id = '" . $id . "'";
$r = mysql_query($q);
while () {
// display entry
}
?>
Se ora mi ha colpito il tasto posteriore, il modulo a database.php (quello usato per filtrare i risultati del DB) richiede la conferma per il nuovo invio. Non solo è molto fastidioso, è anche inutile per me.
Come posso risolvere questo problema? Spero che gli esempi di codice e la spiegazione del mio problema siano sufficienti. Se no fammelo sapere e proverò a specificare.
** ** POST -> * ServerSide 302 Redirect * -> ** ** GET – scunliffe
sono consapevole ci sono un sacco di messaggi con questo argomento. Navigando attraverso di loro non riuscivo a capire il mio problema, quindi ho deciso di chiederlo come una nuova domanda. – user1889382
Probabilmente vuoi usare il pattern 'Post-Redirect-Get', vedi https://en.wikipedia.org/wiki/Post/Redirect/Get e anche http://stackoverflow.com/questions/15288229/automatically- rinvia-post-richiesta-nel-browser-quando-navigando-usando-back-tasto –