Foros del Web » Programando para Internet » PHP »

Ejecutar script al finalizar sesion

Estas en el tema de Ejecutar script al finalizar sesion en el foro de PHP en Foros del Web. Bueno en primer lugar disculpas ya que el título no es el más correcto pero no sabia muy bien como expresarlo mejor. Necesito saber si ...
  #1 (permalink)  
Antiguo 06/02/2006, 02:48
 
Fecha de Ingreso: agosto-2003
Mensajes: 43
Antigüedad: 14 años, 3 meses
Puntos: 0
Ejecutar script al finalizar sesion

Bueno en primer lugar disculpas ya que el título no es el más correcto pero no sabia muy bien como expresarlo mejor.
Necesito saber si es posible ejecutar un script cuando un usuario (validado con sesiones) se marcha de la web (por ejemplo dando al fabuloso botón superior derecho del navegador) sin haber finalizado el proceso.

Se trata de un programita que inscribe a un usuario con unas opciones. Antes de confirmar su elección hay un paso intermedio de comprobación ("asegurese de que su elección es correcta"). Si se marcha sin confirmar su elección (y sin dar al botón de salir logicamente), necesitaria que se ejecutase una operación en tablas mysql. ¿Es posible?

La secuencia actual es:
1.- Se valida. Se crea sesion
2.- Entra en el formulario de opciones. Las opciones disponibles dependen de los datos que hay en la tabla.
3.- Realiza su elección. Los datos son incluidos en una tabla
3.- Se le pide que confirme su elección
4.- Confirma su elección.
5.- Si no confirma su elección y usa el botón salir, los datos son borrados de la tabla pero si se marcha sin más pues no son borrados y me joroba el invento (perdón por el taco).
¿Existe la posibilidad de que si la sesion está inactiva cierto tiempo o antes de acabarse la sesión se pueda ejecutar un script aunque se haya marchado".
__________________
pwmcorg
  #2 (permalink)  
Antiguo 06/02/2006, 07:47
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Necesito saber si es posible ejecutar un script cuando un usuario (validado con sesiones) se marcha de la web (por ejemplo dando al fabuloso botón superior derecho del navegador) sin haber finalizado el proceso.
En javascript tienes el evento "onUnload()" .. pero no es de lo más seguro usarlo. Consulta en el foro de "javascript".

Se trataría de que ante dicho evento .. lances la llamada (vía javascript) de abrir tu script que registre tu proceso posterior.

Cita:
¿Existe la posibilidad de que si la sesion está inactiva cierto tiempo o antes de acabarse la sesión se pueda ejecutar un script aunque se haya marchado".
La forma común de resolver el problema es que tu gestiones tu tiempo de expiración de tus sesiones. PHP lo hace con el uso de sesiones de forma global (para toda sesión abierta) y no tiene control como para "preguntar" con alguna función de cuanto tiempo le queda a la sesión.

Bajo este concepto .. lo que deberías es registrar la fecha que ingresa tu usuario al sistema (o inicia tu proceso) y actualizarla en cada iteracción con el servidor: es decir; cada vez que cargues o llames a una página/script de tu sitio.

De esta forma puedes hacer una consulta SQL a tu BD y ver si ese registro lleva más del tiempo que tu consideres como que ya expiró: tiempo de inactividad. Es decir .. el cálculo del tiempo transcurrido entre la fecha/hora actual y la fecha/hora que registras en ese campo de esa registro.

Importante:
Por otro lado .. Si usas sesiones, deberías almacenar todos esos datos provisorios en variables de sesión .. nunca en "tablas" de tu BD y sólo cuando tu usuario confirme todo lo que tu aplicación requiere es cuando deberías volcar toda esa información de tus variables de sesión sobre tus BBDD que correspondan.
De esta forma .. la expiración "natural" de tus variables de sesión ya se encargaran de eleminar todos esos datos "provisionales" en caso de que tu usuario abandone la sesión en curso.


Un saludo,
  #3 (permalink)  
Antiguo 06/02/2006, 09:45
 
Fecha de Ingreso: agosto-2003
Mensajes: 43
Antigüedad: 14 años, 3 meses
Puntos: 0
expirar sesiones

Muchas gracias Cluster.
Evidentemente la mejor opción es guardar las variables como variables de sesion. Sin embargo, en este caso, la elección "provisional" del visitante, afecta a las opciones que pueda tener otro visitante que acuda un segundo detrás suya y por lo tanto esta opción provisional debe ser guardada en base de datos (o eso creo vaya).
Probare con los tiempos a ver que tal se me da

Muchas gracias
__________________
pwmcorg
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:10.