problema refresh .... dopo invio dati post

Ragazzi scusate la domanda banale ......

Una volta eseguita una query di inserimento dati provenienti da form con metodo post......

e provo a fare il refresh ... mi si invia di nuovo la query ... quindi si duplicano record nella tabella per quante volte ho fatto il refresh .....

come poter ovviare a questo problema .....

grazie ...

inviato 8 anni fa
costaplus
X 0 X

Per farla semplice...

Fai cosi:

Pagina form -> pagina query (alla fine fai un redirect alla pagina di messaggio "Ok") -> pagina "messaggio"

Cosi se ricarichi la pagina non ricarichi la pagina di inserimento.

risposto 8 anni fa
ugly_mau
X 0 X

Grazie per l'aiuto ... mi hai tolto un dubbio ..... anche se ho notato che spesso questo problema non viene controllato o gestito ... quindi anche alcuni codici script che ho visionato il problema lo hanno lo stesso anche creato da programmatori seri ..... azzarola ....

Cmq sono riuscito anche se il ridirect per quanto semplice da degli errori un'esempio una pagina creata con degli include mi dava errore .... mentre togliendo tutto ma lasciando solo codice per l'inserimento dei datai nel db ... funziona tutto ... l'unico ancora dubbio che ho per gestire gli errori quale puo' essere un'idea carina ?

nel senso se sbaglio ha inserire dati oppure invio il form vuoto per errore o volutamente come gestico la cosa ?

rindirizzo al form con la scritta errore nello script ?

risposto 8 anni fa
costaplus
X 0 X

Ho risolto in questo modo semplicemente cosi .... lo posto magari puo' servire a qualcuno ....... conle relative descrizioni ....

<?php

//Inzio sessione 
session_start();

// Al'interno vi e la funzione di logged_in
include_once 'config/access.inc.php';

//impostazioni pr la connessione al database .. 
include_once 'config/conn.inc.php';

// controllo se e oggato l'utente quindi area protetta 
if(logged_in()):
        
        //controllo se sono stati inviati dati dal form che si trova in ins.php
if(isset($_POST['ID'])):
                
                // creazione della query ...
$_SQL="INSERT INTO dati (cognome,nome,email,citta)
        VALUES(
                       '" . $_POST['COGNOME'] . "',
           '" . $_POST['NOME'] . "',
           '" . $_POST['EMAIL'] . "',
           '" . $_POST['CITTA'] . "'
         )";
                        // invio query  
$_query=mysql_query($_SQL);
// controllo se la query e andata a buon fine ..... quindi rstituisce false se vi sono errori 
if (!$_query):
                           //ritorna al form con indicazione che vi e un'errore nell'invio 
header('location:ins.php');
//esco direttamente in ridirect
                           exit();
endif;

                // se il tutto e andato a buon fine viene indirizzato a elenco.php per a visualizzazione dei dati e quindi evitare il fastidioso refresh che invia query all'infinito .. 
header('location:elenco.php');

endif;
endif;
?>

Se qualcuno ha deimetodi alternativi e anche piu semplici .... scriva pure ....... ciao a tutto

risposto 8 anni fa
costaplus
modificato 8 anni fa
X 0 X

Il redirect una buona strategia per risolvere il problema degli inserimenti ripetuti. Per effettuare una comunicazione tra la pagina che effettua il redirect e quella successiva spesso si usano delle vatiabili di sessione, nelle quali memorizzare messaggi o codici che identificano gli errori individuati nella gestione dei dati inseriti dall'utente.

:bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda