evita di postare così tanto codice.. o posti cose circostanziate o niente.. nessuno lo leggerà mai ^^

Comunque ti basta usare una variabile di sessione con cui tener traccia dell'eventuale invio. .al refresh il dato risulta già inviato e via..

come organizzare la cosa dipende da tante cose.. ma una cosa ragionevole potrebbe essere
o memorizzare un timestamp e impedire un altro qualsiasi invio prima di un tot secondi dopo quel timestamp
o memorizzare un qualche id ed impedire l'inserimento dello stesso id

..o ancora, potresti semplicemente fare una SELECT prima dell'inserimento.. se quello stesso record è già presente non lo inserisci edai un errore..

se poi avessi definito una chiave primaria sul DB questo meccanismo sarebbe automatico (darebbe un brutto messaggio d'errore non personalizzato, ma ti bloccherebbe i doppioni)