Ver Mensaje Individual
  #4 (permalink)  
Antiguo 26/10/2006, 06:48
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
Puedes ajustar el tiempo de vida de tus sesiones.

Propagando el SID en cookies y ajustando el tiempo de vida de esa cookie:

session.use_trans_sid = 0
session.use_cookies = 0
session.use_only_cookies = 0

session.cookie_lifetime = 0

(revisa tu configuración de PHP sobre sesione: php.ini o por un phpinfo()

Así genera PHP para propagar el SID una cookie tipo "sesión" .. el tiempo de expiración de esta cookie "0" hace que al cerrar tu navegador la cookie muera y con ella el SID que propaga y relaciona tus datos entre cliente y servidor para la sesión. Esto no quiere decir que la sesión siga activa (si re-uso el mismo SID por otro médio) .. pero al forzar la propagación del SID en cookies .. no tendría problemas por ese lado. De todas formas la vida de la sesión en sí lo define: session.gc_maxtiemlife ..

más info:
www.php.net/session

[quote]Otro de los problemas es que he hecho un script que se fija en una base de datos de mysql cuantos usuarios conectados hay actualmente, la cuestion está en que si el usuario cierra la ventana del navegador directamente en la base de datos seguira figurando como conectado hasta que otra persona se loguee y se actualice la base de datos...hay algun script que al cerrar una ventana de navegador abra otra que cierre sesion y actualice la base de datos??? Gracias....[/qutoe]

Podrías manejar el tema con javacript .. detectando el evento "onUnload()" . .pero para nada es seguro ese método sin contar con los procesos de escripts PHP que no generan salida (por ejemplo que redireccionen por cabeceras HTTP .. ).

En estos casos se implementan sistemas de "inactividad" .. es decir, registrar la última fecha/hora de actividad de tu usuario en el sistema (sobre una BBDD relacionado con el usuario en cuestión) y actualizando dicho dato a -cada- iteracción con tu sistema (en todos tus scripts/páginas). Así puedes comprara la fecha/hora actual con la que ese usuario almacena de última iteracción con el sistema y así determinar que el usuario "ya no está en el sistema" si ha sobrepasado cierto tiempo que tu definas y que será el "margen" de error que vas a tener para saber si realmente tu usuario está en el sistema o "probablemente cerró" la aplicación no por tu botón de "logout" o "salir" que destruye y ajusta ese dato.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.