La solución más ordenada es la que te ha propuesto jam.
Tienes que tratar de separar al máximo los scripts que procesan información de los scripts que la muestran.
Tu consulta ha sido bastante frecuente en los foros, y siempre hemos llegado a la misma conclusión.
formulario--(método post)-->
scriptProceso---(redirección)-->
mostrarResultado
Pero también debes saber que ese "proceso" no necesariamente debe estar en un archivo aparte. Por ejemplo:
Código PHP:
if(isset($POST)){// si hemos enviado ya el formulario...
// ... lo procesamos:
// Aquí todo el proceso, sin ningún tipo de salida (echo, print, etc.)
//...
// Y terminamos con una redirección al mismo script:
header("Location: ".$_SERVER['PHP_SELF']);
}else{// Si no venimos de formulario...
// ... mostramos el formulario.
//...
}
Listo. Espero que se haya entendido.
Saludos