Me he quedado atrapado en el punto de borrar los datos del formulario. Después de que el usuario envía un formulario, los datos se agregan a la base de datos. Está bien hasta aquí. Pero si el usuario actualiza la página, los datos ingresados previamente se vuelven a ingresar en la base de datos. Estoy usando el método de envío para enviar los datos. No estoy usando AJAX. La página completa vuelve a cargarse después de enviar los datos. Por favor, ayúdame con esto. Si hay alguna manera de borrar los datos de formulario después de enviarlos, de modo que después de actualizar la página no se agreguen datos a la base de datos, responda esta pregunta.Borrando los datos del formulario después de la sumisión en PHP
Respuesta
Me parece que la acción posterior de su formulario es la página del formulario en sí. Debe agregar un cheque para ver si el formulario ya se ha enviado, de modo que los datos no se vuelvan a guardar en la base de datos. O puede cambiar la acción posterior a una página diferente que hace la inserción en la base de datos y redirige al usuario al formulario de página inicial.
La mayoría de las personas usa una URL para PUBLICAR el formulario y, a continuación, redireccionar al formulario original. Esta puede ser la misma url.
Después de introducir los datos, hacer una redirección:
header('Location:'.$_SERVER['PHP_SELF']);
Después de redirigir, refrescante no va a hacer que los datos sean insertados de nuevo.
Para mostrar el mensaje al usuario quisiera simplemente establecer un indicador a través de $_GET
. Por ejemplo:
// Redirect and set $_GET variable
header('Location:'.$_SERVER['PHP_SELF'].'?showmsg=true');
Para mostrar el div oculto se puede hacer una función:
function show_confirmation()
{
return isset($_GET['showmsg']) && $_GET['showmsg'] == 'true';
}
Y el uso de la función de la siguiente manera:
<div style="display:<?php echo show_confirmation() ? 'block' : 'none'; ?>">
<!-- Message for user -->
</div>
Gracias amigo, funciona. pero hay otro problema. Tengo un mensaje para mostrar después del envío del formulario. El mensaje se muestra dentro de un elemento div que está oculto antes de que el usuario envíe el formulario. ¿Puedes ayudar con esto? –
Sanket, actualicé mi respuesta con una sugerencia para mostrar el div oculto a sus usuarios. – Mischa
Gracias capitán. Está funcionando bien ahora. Gracias una vez más. –
Trate de usar sesiones. Establezca una variable de sesión para registrar si el usuario ya envió el formulario.
poner esto en el comienzo de su código (esto tiene que estar en cada página):
session_start();
Y luego, cuando se envía el formulario, establezca una variable de sesión:
$ _SESSION [ 'form_submitted'] = true;
Aquí hay un enlace a un tutorial sobre sesiones: Tutorial
Si utiliza POST
en lugar de GET
como la propiedad de acción en el formulario, a continuación, la actualización de la página de resultados no se vuelva a enviar el formulario (algunos navegadores pueden ofrecer la opción para hacerlo, pero ciertamente no deberían hacerlo de manera predeterminada).
Sin embargo, no puede descartar la posibilidad de que un formulario se publique más de una vez; hay varias razones comunes por las que sucede; por ejemplo, si la página tarda en cargarse, el usuario puede hacer clic más de una vez en el botón.
Lo mejor que puede hacer es tener un campo ID único oculto en el formulario, para que pueda saber cuándo recibe un formulario que se ha enviado más de una vez, y su programa puede ignorarlo.
Genere una clave única al generar el formulario html y establezca un campo oculto en el formulario para esta clave. Guarde la clave junto con los datos y no guarde los datos si la clave ya está presente en la base de datos.
Si elige el método de redirección, no olvide agregar un dado después de la redirección para indicarle al servidor web que detenga la ejecución del script.
if(saveFormInformation())
{
header('Location: http://www.example.com/'); //this line instructs browser
//to go to example. com
//but the webserver will keep executing the rest of the script
//unless you instruct it to stop
die; //this line instructs web server to stop execution of the script
}
Después de insertarlo en la base de datos, llame al método unset() para borrar los datos.
unset ($ _ POST);
cheque mi respuesta aquí: https://stackoverflow.com/a/37573913/1828764
- 1. Restablece el valor del área de texto después de la sumisión de la forma
- 2. Borrando la base de datos de C#
- 3. ¿Borrando la pantalla del terminal?
- 4. Mantener los valores seleccionados después del envío del formulario
- 5. ¿Cómo guardo los datos del formulario después de enviar el formulario usando javascript?
- 6. borrando la salida del terminal en linux
- 7. Sumisión condicional en PostgreSQL
- 8. Borrando después de dibujar con CGContext
- 9. Cómo insertar los datos del formulario en la tabla de base de datos MySQL
- 10. Jersey para leer los datos del formulario
- 11. ¿Html.ActionLink() publica los datos del formulario?
- 12. Android, Webview, obtenga los datos del formulario
- 13. HTML Datos del formulario a través de PHP
- 14. Mensaje de fundido después de 10 segundos, borrando los elementos de entrada usando jQuery
- 15. Limpieza de los datos del formulario en Django
- 16. Pasar datos al primer formulario del segundo formulario en C#
- 17. PHP - analizar datos de formulario multiparte
- 18. TempData No está borrando
- 19. $ _POST está vacío después del envío del formulario
- 20. Borrando una sesión en ASP.NET
- 21. Safari y Chrome modificando los datos del formulario en el botón Atrás
- 22. Elmah: ¿Cómo registro los datos de entrada del formulario?
- 23. Cómo eliminar todos los números después del punto en PHP
- 24. cómo recordar datos de entrada en los formularios incluso después de la página de actualización?
- 25. Publicación de descarga después del envío de formulario w/validation
- 26. Usando TortoiseGit borrando todo después de una determinada confirmación
- 27. Google Analytics: ¿puede recopilar datos del formulario?
- 28. jquery obteniendo datos del formulario
- 29. Botón Atrás volver a enviar los datos del formulario ($ _POST)
- 30. Los datos del formulario con codificación URL no son válidos
uso pueden ser un booleano para comprobar antes de enviar, a continuación, cuando se presente la ponemos a true? – Emerion