Foros del Web » Programando para Internet » PHP »

comprobar vigencia de sesiones

Estas en el tema de comprobar vigencia de sesiones en el foro de PHP en Foros del Web. Hola forer@s Quiero saber cuantos usuarios tienen una sesion activa, para esto, tengo una tabla de accesos: t_accesos --------------------------- id_acceso (int) ip_acceso (varchar) fecha_acceso (datetime) ...
  #1 (permalink)  
Antiguo 27/02/2013, 08:36
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 13 años, 10 meses
Puntos: 23
comprobar vigencia de sesiones

Hola forer@s

Quiero saber cuantos usuarios tienen una sesion activa, para esto, tengo una tabla de accesos:

t_accesos
---------------------------
id_acceso (int)
ip_acceso (varchar)
fecha_acceso (datetime)
nombre_user (varchar)
nombre (varchar)
sesion (int)

lo que hago es que al momento que el usuario se logea abro unas variables de sesion ($_SESSION['id_usuario'], $_SESSION['nom_user']) y actualizo la tabla t_accesos poniendole a la sesion 1 y cuando cierran sesion vuelvo hacer el update y la pongo 0.

El problema es que la mayoria cerramos la ventana y no cerramos la sesion debidamente, por lo que ya no tengo realmente la sesiones activas.

Quisiera armar una funcion que compruebe cada cierto tiempo (o no se que me recomiendan) que si existe la sesion.

Se me ocurria condicionar que si existe la sesion $_SESSION['nom_user'] siga con sesion=1 pero si no existe haga el update para que ponga sesion=0

O algo así, no se como podría realizar la funcion si que me sature innecesariamente mi server, que sería lo más recomendable en este caso?
  #2 (permalink)  
Antiguo 27/02/2013, 13:55
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 10 meses
Puntos: 528
Respuesta: comprobar vigencia de sesiones

Yo en vez de usar el 1 y 0 para indicar si está activa o no la sesión, lo que hago es que con cada acción del usuario actualizo la tabla colocando el timestamp, de modo que cuando consulto la tabla de usuarios activos, consulto por los que tengan menos de 3 minutos de su última actualización (timestamp). Claro que el tiempo (los 3 minutos) lo defines tú en función de tus necesidades
  #3 (permalink)  
Antiguo 27/02/2013, 14:15
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 13 años, 10 meses
Puntos: 23
Respuesta: comprobar vigencia de sesiones

Hola ocp001a

Supongo que esto:

Cita:
con cada acción del usuario actualizo la tabla colocando el timestamp
Podria hacer la comparacion para saber quienes siguen logueados, pero como detecto la accion o como me doy cuenta que alguien sigue ahí?

por ejemplo, una comprobacion asi:

si(tiempo_de_accion<3 minutos){
update sesion=0
}

ahora como obtengo tiempo_de_accion ??

gracias
  #4 (permalink)  
Antiguo 27/02/2013, 14:44
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 10 meses
Puntos: 528
Respuesta: comprobar vigencia de sesiones

Mira, depende del formato que quieras usar para el timepo. Yo uso el timestamp, así que lohago de esta forma:

$hoy=time();//tomamos el timestamp

mysql_query("update usuarios set ultma_act='$hoy'"); //actualizo su última actividad


para consultar los usuarios activos, algo como esto:

$hoy=time()-180; //obtengo el timestamp actual y le resto 180 segundos (3 minutos)

mysql_query("select count(*) from usuarios where ultima_act>$hoy"); //contamos lo usuarios cuya última actividad sea más reciente que tres minutos.
  #5 (permalink)  
Antiguo 27/02/2013, 14:51
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 13 años, 10 meses
Puntos: 23
Respuesta: comprobar vigencia de sesiones

mmm entiendo lo de comparar el tiempo

pero sigo si entender como se que el usuario sigue (ojo usuario logueado) en la página del sistema

Cita:
mysql_query("update usuarios set ultma_act='$hoy'"); //actualizo su última actividad
osea cuando sabes que debes lanzar ese update
  #6 (permalink)  
Antiguo 27/02/2013, 15:19
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 10 meses
Puntos: 528
Respuesta: comprobar vigencia de sesiones

La actualización yo la realizo mediante un proceso que se ejecuta cada 3 minutos, mediante js llamo la función en ajax.

Pero si no quieres usar ese mecanismo, es posible que la actualización la coloques dentro de una función que mandes a llamar cada que entran a alguna sección.
  #7 (permalink)  
Antiguo 27/02/2013, 23:30
Avatar de Ekel  
Fecha de Ingreso: noviembre-2009
Mensajes: 62
Antigüedad: 14 años, 4 meses
Puntos: 3
Respuesta: comprobar vigencia de sesiones

si lo que quieres es eliminar las sesiones inactivas es


Código HTML:
"DELETE FROM tabla_de_sesiones WHERE Comlumna_ultima_actividad < time()-180"
lo que eliminaría las sesiones de más de hace 3 minutos. ;D
__________________
Black Nation Army

Etiquetas: sesiones, tabla, usuarios, variables
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 15:33.