Muestra el código que usas .. lo mas probable es que tengas un problema de estructura.
Para evitar el problema que mencionas en general .. todo proceso PHP debe estar separado de la parte que presente algún mensaje de error/exito .. en el mismo flujo del script.
Por ejemplo hacer algo típo:
Código PHP:
<?
$query=mysql_query("INSERT ....");
if ($query){
echo "todo fué bien ...";
} else {
echo "hay problemas";
}
Ese tipo de construcciones se prestan a que si recargas la página o llegas a esa página por tu historial del navegador .. originas una nueva ejecución de ese código PHP que en tu caso hace un "insert" a una BBBDD. (podría ser envio de un e-mail .. o cualquier otro proceso).
Para solventar el problema .. tu script o sección del mismo que ejecute el proceso PHP en sí (tu "INSERT" en tu caso) debe quedar aislado .. que se ejecute y al terminar redireccione a otro sitio. Normalmente a una página destinada para mostrar los mensajes de error .. o al "formulario" tal vez por el cual se llegó a ese proceso .. El caso es "redireccionar" para que no quede rastro de esa página en el navegador:
Código PHP:
<?
$query=mysql_query("INSERT ....");
if ($query){
header ("Loaction: pagina_mensajes.php?msg=1");
exit;
} else {
header ("Loaction: pagina_mensajes.php?msg=2");
exit;
}
Un saludo,