Foros del Web » Programando para Internet » PHP »

capturar cuando una sesión "muere"

Estas en el tema de capturar cuando una sesión "muere" en el foro de PHP en Foros del Web. Saludos ¿Es posible obtener el momento en que "muere" una sesión del navegador? para incorporar ese dato a la auditoría de un sistema Gracias...
  #1 (permalink)  
Antiguo 17/08/2011, 15:40
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 18 años, 8 meses
Puntos: 7
capturar cuando una sesión "muere"

Saludos

¿Es posible obtener el momento en que "muere" una sesión del navegador? para incorporar ese dato a la auditoría de un sistema

Gracias
__________________
Gracias de todas todas
-----
Linux!
  #2 (permalink)  
Antiguo 17/08/2011, 15:45
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: capturar cuando una sesión "muere"

Desde PHP no es posible. Ya requieres por ejemplo si el usuario se ha deslogueado, o cerrado el navegador enviar una petición via ajax y que ahí se reporte, o si la persona se desloguea hacer la petición, pero si cierra el navegador vas a tener que usar por ejemplo onbeforeunload y onunload para que logres enviar esa petición.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 17/08/2011, 15:46
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 11 meses
Puntos: 394
Respuesta: capturar cuando una sesión "muere"

O.o en realidad no se si se puede, ya que la sesión durara el tiempo que este establecido en la configuración del PHP.INI

Lo que si puedes hacer es que después de transcurrido X cantidad de tiempo la sesión sea destruida.

Recuerda que las sesiones se almacenan en el servidor, por lo tanto no es cosa del navegador destruir o no la sesión, es cosa del servidor.
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #4 (permalink)  
Antiguo 18/08/2011, 06:47
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 18 años, 8 meses
Puntos: 7
Respuesta: capturar cuando una sesión "muere"

Cita:
Iniciado por jotaincubus Ver Mensaje
O.o en realidad no se si se puede, ya que la sesión durara el tiempo que este establecido en la configuración del PHP.INI

Lo que si puedes hacer es que después de transcurrido X cantidad de tiempo la sesión sea destruida.

Recuerda que las sesiones se almacenan en el servidor, por lo tanto no es cosa del navegador destruir o no la sesión, es cosa del servidor.
mmm esa idea me gusta, fijar el tiempo por ejemplo a 2 minutos, ¿cómo se hace? ¿por dónde irían los tiros?
__________________
Gracias de todas todas
-----
Linux!
  #5 (permalink)  
Antiguo 18/08/2011, 07:10
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 11 meses
Puntos: 394
Respuesta: capturar cuando una sesión "muere"

Existen varias formas de hacerlo, una de ellas es cambiar el valor en tiempo de ejecución, osea colocar el código directamente en la paginas sin tocar el PHP.INI y ese código solo sera aplicado a la sesión que ha sido creada y no a todas las que se creen en la aplicación.

EN EL ARCHIVO PHP.INI debes buscar la linea que tienes que buscar el campo que se llama session.gc_maxlifetime y cambiarle el valor (en segundos).

Otra forma puede ser establecer la duración en las cookies.
Puedes controlar el tiempo de una sesion poniendo esta linea ini_set("session.cookie_lifetime","36000"); pero tiene que ser la primera linea que aparezca, incluso antes de iniciar la sesion

Código PHP:
Ver original
  1. <?php
  2. ini_set("session.cookie_lifetime","36000");
  3. $_SESSION["ejemplo"]="invitado";
  4. ?>

Si ya quieres hacer cosas más elaboradas, puedes hacer que si ha pasado un tiempo determinado (una hora o lo que quieras) destruya la sesion.

Código PHP:
Ver original
  1. <?php
  2. ini_set("session.cookie_lifetime","36000");
  3. $_SESSION["time"] = time();
  4. if (time() - $_SESSION["time"] < 3600)  {
  5. echo 'no ha pasado una hora';
  6. }else{
  7. echo 'ha pasado mas de una hora';
  8. }
  9. ?>
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???

Etiquetas: sesión
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 08:01.