Ver Mensaje Individual
  #2 (permalink)  
Antiguo 06/02/2006, 07:47
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
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,