entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Duda sobre funcionamiento de PHP y MySQL

Hola a todos!

Mi preguntas son las siguientes:

¿Que pasa cuando un usuario cierra una página web y se estaba realizando una operación de alta baja o modificación sobre una base de datos MySQL? ¿La operación termina de realizarse, se hace a medias o no se hace? ¿Y si el usuario en vez de cerrar la página, presionó el botón de detener y luego volvió a enviar el formulario; se produce un "doble submit"? ¿Cómo evitar problemas con esto? ¿Y qué pasa si las peticiones se realizan a través de AJAX?

Saludos!

1 Respuesta

3votos

Leonardo-Tadei Puntos226490

Hola @pedrourday,

1) no pasa nada, porque el modelo de conexión en la web es stateless. Si la petición llega al servidor, se ejecutará completa, y si no llega, no se ejecutará.

2) como las peticiones HTTP se envían al intérprete PHP después de terminar, no se puede hacer una operación a medias.

3) si el usuario por cualquier motivo, envía 2 veces lo mismo al servidor, se procesará dos veces. En este escenario no se llama "doble submit": eso es cuando se hace doble click en un botón y el navegador envían 2 petiones iguales una atrás de otra.

4) cuál sería el problema? Si te referís a que no se envíe dos veces lo mismo por accidente, una técnica habitual es deshabilitar el botón de envío luego del click... pero nada impide por ejemplo que un usuario complete dos veces el mismo formulario y lo mande al servidor!
Si tenés validaciones de modelo que limiten que se haga dos veces lo mismo, deberían estar implementadas en el servidor.

5) con las peticiones desde AJAX es todo exactamente igual: en ambos casos la petición se envía del todo, o no se llega, etc.

Una forma de minimizar estos problemas, es hacer que los formularios apunten a un script (un control) que realice las tareas, y luego de realizarlas vuelva a la página de origen con un header("Location: ..."); De esta forma al menos al apretar "recargar" no se envían por accidente los mismos datos.

Todo lo demás hay que implementarlo programando!

Saludos cordiales Pedro

Por favor, accede o regístrate para responder a esta pregunta.

¿Conoces alguien que puede responder?
¡Comparte esta pregunta!


Otras Preguntas y Respuestas


Actividad Reciente

  • Freda0370183 ganó una medalla hace 6 horas

    Club de los 100 - Recibió un total de 100 puntos
  • NilaPilgrim4 ganó una medalla hace 15 horas

    Humano Verificado - Verificó su email
  • ErwinImhoff1 ganó una medalla hace 1 día

    Club de los 100 - Recibió un total de 100 puntos
  • FelipeMedel ganó una medalla hace 1 día

    Buen Comentario - Comment received +2 upvote
  • FelipeMedel ganó una medalla hace 1 día

    Renovador - Recibió medalla Buena Respuesta en res…
  • FelipeMedel ganó una medalla hace 1 día

    Buena Respuesta - Recibió +1 votos en respuesta
  • FelipeMedel ganó una medalla hace 1 día

    Buen Comentario - Comment received +2 upvote
  • FelipeMedel ganó una medalla hace 1 día

    Buena Respuesta - Recibió +1 votos en respuesta
  • EllPanda ganó una medalla hace 1 día

    Veterano - Primera visita hace más de 180 días
  • EllPanda ganó una medalla hace 1 día

    Regular - Primera visita hace más de 90 días
...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta