Yo hago algo así...
Valido, actualizo y marco errores en la misma página, si todo sale bien, hago un redireccionamiento hacia la página que yo quiera...
Con esto evitas que se re-envíe dos veces la misma información haciendo reload.
Código PHP:
<?php
// Primero vemos si se ha enviado el formulario
if (count($_POST)) {
// Aquí verifico los datos del formulario
// Si no hay errores marco la variable $ok = true
if ($ok) {
// Guardo los datos en la BD, o lo que tenga que hacer
// si todo salió bien
header ("Location: ".$_SERVER["HTTP_HOST"]."/pagina_ok.php");
} else {
// Si ha habido errores, guardo los datos posteados en una variable
// que usaré para llenar los campos
$datos = $_POST;
}
}
?>
<form method="post">
<input type="text" name="nombre" value="<?php echo $datos["nombre"]; ?>">
<input type="text" name="ciudad" value="<?php echo $datos["ciudad"]; ?>">
<input type="text" name="pais" value="<?php echo $datos["pais"]; ?>">
<input type="text" name="edad" value="<?php echo $datos["edad"]; ?>">
</form>
Bueno, ese es el chiste. Hay muchas otras maneras de lograrlo, pero esta es una...