Evitar que el formulario sea enviado dos veces

Tengo un formulario php simple, como este:

<?php if(isset($_POST['myform'])) // email... else // display form 

el problema es que si actualizo la página después de enviar el formulario, se envía dos veces. ¿Cómo puedo evitar que esto suceda?

Debe realizar un REDIRECTO a una página con un mensaje de que se insertaron los datos … y un botón Atrás para volver al formulario (si lo desea) …

Para redirigir usando PHP use la función de header :

 header('Location: http://www.example.com/'); 

Realice una redirección después de que los datos se inserten en una página de confirmación (se puede hacer con el encabezado () , que debe borrar los datos POST y permitir la actualización sin duplicar el contenido.

En el caso de que el usuario tenga retraso y presione el botón de enviar varias veces, entonces tal vez use el mecanismo del lado del cliente, use js para desactivar el botón de enviar una vez que se presiona. pero tendrá que mostrar un mensaje que diga más o menos algo así como “enviar mensaje … si no hay respuesta, vuelva a cargar la página y vuelva a intentar”.

 session_start(); if (!$_SESSION['REQUEST_TYPE_USER_ID'] == $_POST) { //your code //after the success process $_SESSION['REQUEST_TYPE_USER_ID'] = $_POST; } else { // request duplicated }