Newsgroup: it.comp.www.php
Titolo: catturare il refresh.

Ho un a pagina php dove effettuo un insert in un DB.
Come faccio ad impedire all'utente che facendo un reload
o andando avanti e indietro con il browser mi faccia un numero
infinito di insert con lo stessa query?
--
--
Xantos
m.mo...@NlOiSbPeArMo.it
 per rispondermi basta non urlare!

 infinito di insert con lo stessa query?
a me vengono in mente 2 soluzioni, poi altri potrebbero suggerirtene altre.
1) metti il tutto dentro ad una sessione, effettuata la insert distruggi 
la sessione in modo tale che se l'utente dovesse ricaricare la pagina, 
la query non venga eseguita.
2) la query la esegui in un file PURAMENTE di codice php che una volta 
verificata la corretta esecuzione della query stessa, fa un redirect ad 
una pagina di *atterraggio*. quest'ultima confermera' l'inserimento e 
potra' essere ricaricata infinite volte.
ciao!
-- 
Fox Mulder
...the truth is out there

 potra' essere ricaricata infinite volte.
va bene per il reload. Ma se l'UTONTO mi fa back(-2) e poi mi va avanti?
mmmmh
ci lavoro...
grazie


va bene per il reload. Ma se l'UTONTO mi fa back(-2) e poi mi va avanti?
insert.php	Esegue l'inserimento, e invia come HTML:
<SCRIPT LANGUAGE="JavaScript">
<!--
	if (document.images)
		location.replace('
http://tuodominio.it/confirm.php'
);
	else
		location.href = '
http://tuodominio.it/confirm.php
';
//-->
</SCRIPT>
Oppure gli sovrascrivi history(), mettendoci un sito porno. Cosi' se prova
a premere BACK nel frattempo si distrae e se ne scorda.
Leonardo Social Engineering
-- 
Time's angles, mages tell, conceal a place
incredible, beyond the mundane mind;
night-shrouded and between the seas of space
dread creatures drift in the ageless winds.

 a premere BACK nel frattempo si distrae e se ne scorda.
ROTFL!
:o)
si non e' male visto che l'utente in questione e' un archeologo non farebbe
male!...
Conuque ho risolto cosi':
faccio una popup di conferma. appena l'utente conferma
 esegue l'insert chiude se stessa e da' fuoco alla finestra genitrice....
Cosi' l'history dell popup se ne va a farsi benedire....
BYe
e grazie a tutti!


"Xantos" <m.mo...@NlOiSbPeArMo.it> ha scritto nel messaggio
news:aklfsv$fv1$1...@newsfeed.cineca.it...

Ciao, penso che il tuo problema sia più che altro sull'INSERT in quanto un
UPDATE aggiorna qualcosa di già aggiornato e DELETE cancella solo una volta
dopodichè non trova più niente.
Io avevo la tua stessa necessità, ho risolto in due modi simili in
situazioni differenti:
1- Nella prima situazione andavo ad inserire tra gli altri anche un valore
che per me era univoco e quindi prima dell'insert controllavo se era già
presente. Se ti rava fuori un record voleva dire che l'utente ha fatto il
refresh della pagina
2- Nella seconda situazione non inserivo chiavi univoche allora (sapendo
quali erano i valori aggiornati dalla insert) prima di inserire facevo una
select con il maggior numero di campi e rispettivi valori (quelli che stavo
per inserire e che quindi non dovevano ancora esistere!!!)... se li trovava
era per un refresh!
In questo secondo caso, per evitare di beccare qualcosa di sbagliato con la
select di controllo mettevo praticamente tutti i campi e rispettivi valori
che facevano parte della insert! così ero praticamente sicuro che si
trattase (se trovava qualcosa) di un refresh!
Se non ti è ben chiaro scrivi pure anche privatamente.
Ciao
Francesco