¿Cómo borrar los datos del formulario para que la actualización no duplique datos sin reenviar?

Creé un libro de visitas, en el que los usuarios pueden agregar entradas a través de un formulario HTML. Después de enviar datos al libro de visitas, algunos usuarios actualizan la página. Todos los navegadores que conozco vuelven a enviar los datos. después. ¿Hay alguna manera de decirle al navegador que los datos no deben volver a enviarse?

Solía ​​tener una redirección después de almacenar correctamente los datos en la base de datos. Pero, ahora quiero informarle al usuario algo de información adicional, por ejemplo, “Gracias por su entrada, titulada ‘…’.”, O “Se envió una copia de la entrada a su dirección de correo electrónico …”. Realmente me gusta evitar agregar todos los valores a GET-Parameters para poder usar la información después del reenvío.

¿Hay alguna otra forma (sin un reenvío) de evitar que el navegador vuelva a enviar los datos después de que el usuario haga clic en el botón “actualizar”?

Tal vez podría establecer una variable de sesión con un hash de los datos publicados y verificarlo cada vez que se carga la página. Si el hash es el mismo, los datos ya se han enviado:

< ?php session_start(); //Start the session $dataHash = md5($_POST['name'].$_POST['comment'].$_POST['whatever']); //Get a hash of the submitted data if(isset($_SESSION['gbHash']) && $_SESSION['gbHash'] == $dataHash) { //Check if the data has been submitted before //Do not save the data/show a warning message } else { //Save the data/show a thank you message } $_SESSION['gbHash'] = $dataHash; ?> 

¿Hay alguna otra forma (sin un reenvío) de evitar que el navegador vuelva a enviar los datos después de que el usuario haga clic en el botón “actualizar”?

Sí, Ajax, y aún puede mostrar todos sus mensajes de éxito / falla e incluso validación …

lea esto – http://net.tutsplus.com/tutorials/javascript-ajax/submit-a-form-without-page-refresh-using-jquery/

Ejemplo:

 var dataString = 'name='+ name + '&email=' + email + '&phone=' + phone; //alert (dataString);return false; $.ajax({ type: "POST", url: "bin/process.php", data: dataString, success: function() { $('#contact_form').html("
"); $('#message').html("

Contact Form Submitted!

") .append("

We will be in touch soon.

") .hide() .fadeIn(1500, function() { $('#message').append(""); }); } }); return false;

Espero que esto ayude.

redirigir al usuario con un mensaje personalizado adjunto a la ubicación de redirección después de la acción POST realizada, por ejemplo

 header("location: http://www.website.com/thankyou.php?msg=email_sent"); 

o

 header("location: http://www.website.com/thankyou.php?msg=email_not_sent"); 

o

 header("location: http://www.website.com/thankyou.php?success=0"); 

y luego cambie los parámetros GET para mostrar el tipo de mensaje correspondiente. o usuario AJAX POSTING 🙂