Tengo una página web de php con un formulario. Después de completar el formulario en la página web, puedo enviarlo al servidor. Pero después de eso, si actualizo la página, inserta el mismo registro en la base de datos. ¿Hay alguna solución a este problema?Actualizar una página web vuelve a insertar datos en DB
Respuesta
Utilice el patrón POST/Redirect/GET. Esto evitará que el usuario pueda volver a enviar la misma forma.
Sí, haga dos consultas. La primera comprueba para asegurarse de que los datos no existen en la base de datos, la segunda inserta si no hay datos duplicados. Hay varias maneras de verificar que los datos duplicados no existan, pero este es el proceso básico por el que querrá pasar.
Hay un número de maneras, por ejemplo:
- Crear un token que se inserta en la forma (campo oculto). si el mismo token se envía dos veces, deseche el segundo envío.
- Compruebe en la base de datos si ya existe una publicación idéntica.
- Guarde el formulario enviado en una variable de sesión.
- Redirige al usuario a una segunda página después del envío, utilizando el Post/Redirect/Get pattern (preferiblemente en combinación con uno de los anteriores).
Antes de insertar en la base de datos compruebe si los mismos valores ya están duplicados, y si son duplicados, no los inserte. La comprobación de múltiples columnas ayuda aún más. Por ejemplo, en lugar de buscar solo un "nombre de usuario", debe buscar un "nombre de usuario" Y "contraseña".
Obviamente, los ejemplos anteriores son falsos, pero debe entenderse.
Puede hacer una página process.php y establecer el formulario action
a la misma.
En process.php
//code to insert item to database
header('Location: YOUR_FORM_PAGE_HERE);
Luego se enviará de vuelta a la página original y no habrá ningún dato colocar
Bueno, eso es lo que significa Actualizar: "hacerlo de nuevo. "
Puede verificar si los datos que coinciden con los datos enviados ya se encuentran en la base de datos. Si es así, puede rechazar la nueva presentación.
Se podría cambiar la consulta a INSERT IGNORE INTO table_name ...
esto va a impedir que se inserte dos veces.
- 1. TempData se vuelve nulo después de actualizar la página
- 2. Actualizar/Insertar en una tabla usando SQLCeResultSet
- 3. Unidad prueba insertar/actualizar/eliminar
- 4. actualizar una parte de la página web en php
- 5. Cómo hacer una actualización de una página web cuando el usuario se vuelve móvil al paisaje
- 6. ¿Puedo insertar una imagen en una tabla MYSQL DB?
- 7. ¿Cómo insertar datos en el campo sin actualizar?
- 8. ZF2 Zend \ Db Insertar/Actualizar usando la expresión Mysql (Zend \ Db \ Sql \ Expression?)
- 9. ¿Puede enviar datos desde una página web a Flurry Analytics?
- 10. Cómo actualizar una página en una aplicación de red troncal
- 11. ¿Tiene DB2 una instrucción "insertar o actualizar"?
- 12. Insertar página externa html en una página html
- 13. Agregar un blog a una página web existente
- 14. PHP MYSQL Insertar/Actualizar
- 15. ¿Upsert (actualizar o insertar) en Sybase ASE?
- 16. ¿Insertar fila en DB mientras usa multiprocesos?
- 17. Insertar NULL a SQL DB desde C# DbCommand
- 18. Base de datos: insertar nuevas filas o actualizar las existentes?
- 19. ¿Cómo puedo actualizar una página cuando se actualiza una base de datos?
- 20. Insertar en dest y actualizar fuente
- 21. cómo actualizar una página de Django sin una recarga de página?
- 22. Auto Actualizar una página en Rails 3
- 23. Uso de SQLBulkCopy para insertar/actualizar la base de datos
- 24. Página web redirigir a la página principal con CGI Python
- 25. cómo forzar un navegador para actualizar una versión en caché de una página web
- 26. Actualizar a php5.3 se rompe al conectar a mysql db
- 27. ¿Cómo puedo insertar una diapositiva de PowerPoint en una página web?
- 28. ¿Cómo actualizar o insertar en el conjunto de datos de Sequel?
- 29. Flask-SQLAlchemy: cómo insertar o actualizar condicionalmente una fila
- 30. Bibtex en una página web?
+1: tokens de autenticación de formulario. También ayuda a protegerse contra CSRF. –