Foros del Web » Programando para Internet » PHP »

borrar datos cuando usuario expira sesión

Estas en el tema de borrar datos cuando usuario expira sesión en el foro de PHP en Foros del Web. hola a todos, necesito eliminar datos de usuario cuando éste sale de mi página web. Hasta ahora usaba un unload event (que via ajax llamaba ...
  #1 (permalink)  
Antiguo 20/05/2009, 04:29
 
Fecha de Ingreso: enero-2004
Mensajes: 18
Antigüedad: 16 años
Puntos: 0
borrar datos cuando usuario expira sesión

hola a todos,
necesito eliminar datos de usuario cuando éste sale de mi página web. Hasta ahora usaba un unload event (que via ajax llamaba a php) pero a veces falla y necesito una cosa segura.

Me preguntaba si session_set_save_handler is lo que necesito. Incluso si el usuario deja la aplicación, su sesión será destruida (cuando alcanze $maxlifetime) y en consecuencia las acciones asociadas serán ejecutadas (funciones como borrar datos de la base de datos del usuario, carpetas....)??

En los docs de PHP se dice: "session.gc_maxlifetime specifies the number of seconds after which data will be seen as 'garbage' and cleaned up. Garbage collection occurs during session start." Así pues dichas acciones asociadas a session_set_save_handler serán ejecutadas cuando otro usuario inicie session? no deberian ejecutarse cuando caduca la sesion?

También tengo curiosidad por esto: ""session.gc_probability in conjunction with session.gc_divisor is used to manage probability that the gc (garbage collection) routine is started.Defaults to 1" ----> significa esto que sólo el 1% de las sesiones antiguas son borradas (y ejecutadas sus acciones asociadas) cada vez?

son muchas preguntas, pero cualquier ayuda será bienvenida,gracias

Pere
  #2 (permalink)  
Antiguo 20/05/2009, 04:46
 
Fecha de Ingreso: marzo-2008
Ubicación: En casa
Mensajes: 252
Antigüedad: 11 años, 11 meses
Puntos: 4
Respuesta: borrar datos cuando usuario expira sesión

Se me ocurre (bueno en realidad yo lo uso)

Coges la hora de acceso y cuando pasen X segundos de inactividad aces un sesion destroy, sino te e entendido mal esto valdria.

Ejemplo:
Código PHP:
$fechaGuardada $_SESSION["ultimoAcceso"];
$ahora date("Y-n-j H:i:s");
$tiempo_transcurrido = (strtotime($ahora)-strtotime($fechaGuardada));
if(
$tiempo_transcurrido >= 2000) {
session_destroy();
else {
$_SESSION["ultimoAcceso"] = $ahora;} 
__________________
Ayudar cuesta mucho, dar las gracias no tanto, tenlo en cuenta siempre.
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 03:44.