Foros del Web » Programando para Internet » PHP »

cierre sesiones automaticamente

Estas en el tema de cierre sesiones automaticamente en el foro de PHP en Foros del Web. Loading.... Espero funcione :D! gracias.... en unos momentos comento como me fue ;)...

  #31 (permalink)  
Antiguo 08/06/2006, 08:42
Avatar de seik!  
Fecha de Ingreso: mayo-2006
Mensajes: 492
Antigüedad: 17 años, 10 meses
Puntos: 6
Loading....

Espero funcione :D! gracias.... en unos momentos comento como me fue ;)
__________________
sEIK! -Chile-
Analista Programador.
  #32 (permalink)  
Antiguo 08/06/2006, 11:04
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Los javascript que se postearon fueron para cerrar una sesion en tiempo real, por asi decirlo, al redireccionar el navegador a una pagina PHP que eliminara los datos de la sesion...
Ok, .. esa "ejecución" de tu script que validará la sesión (su caducidad) si no quieres esperar a una recarga de página de parte del usuario, o de que accione un link .. o envie un formulario (que en última instanacia es lo que realmente se validará) .. puedes usar javascript como lo mencionaron, puedes usar AJAX para esa llamada a tu script PHP de forma transparente (sin recarga de página aparente ..) en fin.. cualquier médio o lenguaje del "lado del cliente" que llame a un script PHP servirá para ese propósito.

Pero .. la "base" del sistema es lo que mencioné:

Cita:
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 ...
Almacenas la fecha/hora en la que se ejecuta tu script en una BBDD por ejemplo:

Una tabla tal que ...
id_actividad
id_usuario (lo obtenemos de $_SESSION['id_usuario'] o alguna variable que nos indentifique el usuario como único ...)
fecha_hora_ultima_actividad (un DATETIME . o un Time Stamp de Unix (time() en PHP)...)

Y todos los scripts al ejecutarse (da igual si la ejecución es "manual" por parte del usuario: acciona link, envia formulario .. etc o si lo haces automáticamente ayudandote de javascript, AJAX, Remote Scripting o lo que gustes ..) .. validan la fecha actual con la última (a base de consulta SQL restando fechas ...).

Si ... pasa la validación anterior .. registran esos datos .. para la proxima llamada del script .. (más o menos como lo haces en una sesión pero cambiando el médio de almacenamiento de datos .. para que no interfiera con la sesión).

De hecho no sé si han podido ver o probar los ejemplos que dí en links (ADOdb y la otra por decir algunos), pero .. hacen exactamente lo que he mencionado (con más funcionalidades claro y más refinado el algorítmo ..)

Cita:
seik!, tenemos una variable DE SESION llamada ultima_actividad ($_SESSION['ultima_actividad']) que nos guardara el tiempo en el que se realizo el ultimo acceso a cada pagina... Con esta variable, a mi parecer, podemos hallar una diferencia entre ese tiempo y el tiempo del siguiente acceso, para que asi, si excede algun dewterminado tiempo de inactividad, la sesion termine... algo asi:
Pero aun así dependes enteramente del tiempo máximo que PHP otorga a todas las sesiones que se crean en el servidor (directiva php.ini: session.gc_maxtimelife)

Recuerda que las sesiones son válidas y pertenecen en exclusiva al usuario que las crea (mejor dicho: cliente). Por ende .. no puedes almacenar un valor así en una variable de sesión. Debe quedar almacenado en -otro- médio .. una BBDD, un archivo de texto plano .. etc.

Esto no quiere defir que esto no "funcione" .. eso sí .. en los casos que definas como tiempo de "inactividad" menor al que session.gc_maxtimelife defina ... pero realmente no es lo ideal. Por ejemplo .. en algún momento te gustaría ver cuantos usuarios activos tienes en tu sistema y quienes son (como para "patearlos" si es necesario en cualquier momento matando -su- sesión) .. Si almacenas estos datos en una variable de sesión no podrías hacer esto .... pero si si los almacenas en una Base de datos o sitio "común" que puedas acceder.

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

Última edición por Cluster; 08/06/2006 a las 11:13
  #33 (permalink)  
Antiguo 09/06/2006, 14:08
okram
Invitado
 
Mensajes: n/a
Puntos:
Amen me convenciste...

pero... imagino que de esa manera, se borraran todos los usuarios de la base de datos usada para ver los usuarios activos que hayan excedido del tiempo max de inactividad, y eso se hara restando el valor de time() actual con el valor guardado enla base de datos... imagiuno que eso para cada registro... que tantos recursos se consumen calculando eso para cada registro??? (son cientos de consultas a la BD)

Salu2

Última edición por okram; 09/06/2006 a las 15:01
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 17:00.