Si usás la cabecera Location para redirigir (con
header), al actualizar la página no debería haber una re-inserción de los datos.
Para esto, tenés que separar las cosas en 3 pasos (no necesariamente 3 páginas diferentes): la página que contiene el formulario, la que procesa los datos, y la que muestra el resultado. Si hacés que el flujo sea
formulario --> (via POST) --> procesamiento --> (via header()) --> resultados
solucionás el problema.
Pero en realidad el tema es más complejo que eso, ya que perfectamente puedo volver hacia atrás e ingresar los datos de nuevo. Podría de forma maliciosa entrar en una cadena de "atrás -> enviar -> atrás -> enviar...".
Ya dependerá de tu aplicación el cómo manejás esta situación, pero al menos el problema específico por el que preguntás ya queda solucionado.
Saludos.