Ver Mensaje Individual
  #29 (permalink)  
Antiguo 07/06/2006, 15:56
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Me parece que están enfocando el tema de "matar" una sesión ante un evento o tiempo del "lado del cliente" .. cosa que NO puede producirse en muchos casos.

Por ejemplo .. cuando un script PHP "PURO" (nada que enviar al cliente a ejecutar, ninguna página que generar) tenga que "matar" esa sesión a cierto tiempo .. NO se podrá hacer con las técnicas propuestas de javacript -> forzar a llamar a cierto script PHP. Tampoco funcionará con navegadores con javascript deshabilitados (OK, ¿quedará algún navegador que no tenga javascript habilitado? .. seguro que no o los menos .. pero es otro motivo a tener encuenta).

El tratamiento que se le suele dar a "expirar" una sesión -indivitual- (sí, .. individual por qué PHP gestiona las sesiones y su tiempo de expiración en forma global para toda sesión creada en el servidor* es el de ir actualizando el tiempo que el "cliente"** pide una página de tu sitio y contrastar ese tiempo almacenado en algún medio: BBDD o similar que sea "de acceso común" no una variable de sesión por supuesto ya que pertenece -sólo- al cliente que lo crea ... con un tiempo que uno determine como "inactividad del usuario" .. es decir .. el tiempo que nosotros consideremos que si no ha "pedido" alguna página del sitio: por recargar la página, hacer click en un link, enviar un formulario .. etc se le considerará como que ya no está en el sistema expirando su sesión y/o denegando el acceso a tal proceso.

Así por ejemplo es como funcionan los sistemas de "usuarios activos" que veran (hasta en las FAQ's de este foro y en mensajes del foro en general) para determinar quien está en el sistema y quien no (sistema: sitio ... web).

Como veran, el soporte de sesiones de PHP es "pesimo" en este aspecto, no tiene ese "control fino" de las sesiones creadas que necesitamos muchas veces. Ahora .. el detalle está si en "implementar" uno de estos sistemas (re-inventar la rueda) o usar alguno ya hecho y en función de este "montar" (o desarrollar) tu -aplicación- que use sesiones.

Por ejemplo está la classe ADOdb con su manejo de sesiones .. el cual permite almacenar los datos en una BBDD de la sesión que creamos .. sus variables .. control del tiempo de expiración .. "matar" una sesión en forma arbitaria .. ver las sesiones en curso (como para un panel de administración del sistio) .. etc .. etc. Si quieren verlo:

http://phplens.com/lens/adodb/docs-session.htm

Otro ejemplo:
http://www.hawkee.com/snippet.php?snippet_id=1342

---------------------------------

Notas:
* session.gc_maxtimelife en combinación con el tipo de propagación del SID (cookies o URL) .. sobre todo del tiempo de expiración de la cookie que PHP crea si se propaga así el SID .. aunque en última instancia quien manda es la directiva mencionada)
** Cliente: PC/navegador que ejecuta tu script PHP o pide una página en general al servidor HTTP.

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