Foros del Web » Programando para Internet » PHP »

Expiración de sesiones!

Estas en el tema de Expiración de sesiones! en el foro de PHP en Foros del Web. Hola, quisiera saber cómo le hago (en forma práctica porque he encontrado en google, pero solo teoría) para que se termine automáticamente una sesión si ...
  #1 (permalink)  
Antiguo 22/12/2007, 10:40
 
Fecha de Ingreso: febrero-2007
Mensajes: 104
Antigüedad: 17 años, 9 meses
Puntos: 0
Pregunta Expiración de sesiones!

Hola, quisiera saber cómo le hago (en forma práctica porque he encontrado en google, pero solo teoría) para que se termine automáticamente una sesión si cierta persona no se desloguea y cierra el navegador.

Gracias!
  #2 (permalink)  
Antiguo 22/12/2007, 11:03
Avatar de marcosr  
Fecha de Ingreso: agosto-2005
Ubicación: Montevideo, Uruguay
Mensajes: 451
Antigüedad: 19 años, 3 meses
Puntos: 5
Re: Expiración de sesiones!

No puedes hacer que la sesión termine por si sola (creo) pero una solución práctica sería la siguiente:

Cuando el usuario inicia sesión tu creas una sesión extra llamada tiempo cuyo valor sea igual a time() osea la hora y fecha exacta en que se creó la sesión. Ahora cada vez que validez que el usuario esté conectado fijándote si la sesión de usuario existe, también te fijas cual es la diferencia de tiempo desde que el usuario ha iniciado sesión. En caso de que el resultado de mayor a por ejemplo 3600 segundos lo desconectas.

Utilizando el sistema anterior lograrás que exista un tiempo fijo para las sesiones y funciona tanto si el usuario entra un segundo después de que la sesión expire o horas luego de que expiró.

P.D.: Si quieres que las sesiones se extiendan aún cuando el usuario ya ha cerrado el navegador sustituye a la sesión antes mensionada por una cookie.

Saludos y espero haberte ayudado un poco por lo menos.
__________________
Yo hago preguntas inteligentes para obtener respuestas rapidas, y vos?
(únete a la campaña !)
  #3 (permalink)  
Antiguo 22/12/2007, 11:06
 
Fecha de Ingreso: febrero-2006
Ubicación: Quito
Mensajes: 68
Antigüedad: 18 años, 9 meses
Puntos: 0
Re: Expiración de sesiones!

mira este link espero que te sirve

http://www.desarrolloweb.com/articulos/1991.php
  #4 (permalink)  
Antiguo 22/12/2007, 15:00
 
Fecha de Ingreso: febrero-2007
Mensajes: 104
Antigüedad: 17 años, 9 meses
Puntos: 0
Re: Expiración de sesiones!

ok, gracias...el primer ejemplo es exactamente lo que quiero, pero al cerrar el navegador, realmente lo que que me gustaría saber es saber si se puede realizar cierta acción al momento de cerrar el navegador o por lo menos saber a qué hora salió tal persona del sistema, y guardar ese dato en una tabla si no desloguea y nada más cierra el navegador.

Gracias...
  #5 (permalink)  
Antiguo 22/12/2007, 15:51
Avatar de marcosr  
Fecha de Ingreso: agosto-2005
Ubicación: Montevideo, Uruguay
Mensajes: 451
Antigüedad: 19 años, 3 meses
Puntos: 5
Re: Expiración de sesiones!

Se me ocurre una forma pero no creo que sea muy práctica, tal vez algún miembro conozca una mejor opción.

Podrías colocar en el body de cada una de tus páginas un onclose="funcionregistradora()" que mediante AJAX (se me ocurre) podrías llamar a un script PHP que guarde en la BD el resultado de time(). Al tenerlo en cada página a la que el usuario acceda esta función grabaría la fecha y hora de la última página del usuario.

Qué te parece?
__________________
Yo hago preguntas inteligentes para obtener respuestas rapidas, y vos?
(únete a la campaña !)
  #6 (permalink)  
Antiguo 22/12/2007, 16:06
 
Fecha de Ingreso: febrero-2007
Mensajes: 104
Antigüedad: 17 años, 9 meses
Puntos: 0
Re: Expiración de sesiones!

hey gracias...pero existe en el body la propiedad onclose? Porque no lo sabía?
Yo solo he probado con onunload pero realiza la acción cada vez que cambio de pagina y lo correcto sería que la hiciera al cerrar el navegador. Pero bueno...sigo pendiente para ver si hay algo más....gracias!
  #7 (permalink)  
Antiguo 22/12/2007, 17:09
Avatar de marcosr  
Fecha de Ingreso: agosto-2005
Ubicación: Montevideo, Uruguay
Mensajes: 451
Antigüedad: 19 años, 3 meses
Puntos: 5
Re: Expiración de sesiones!

Si lo siento, era onunload, no había tomado en cuenta que lo hace también cuando se cambia de página. :S
__________________
Yo hago preguntas inteligentes para obtener respuestas rapidas, y vos?
(únete a la campaña !)
  #8 (permalink)  
Antiguo 22/12/2007, 17:21
 
Fecha de Ingreso: febrero-2007
Mensajes: 104
Antigüedad: 17 años, 9 meses
Puntos: 0
Pregunta Re: Expiración de sesiones!

He probado con onclose pero no me funciona....
  #9 (permalink)  
Antiguo 22/12/2007, 17:23
 
Fecha de Ingreso: febrero-2007
Mensajes: 104
Antigüedad: 17 años, 9 meses
Puntos: 0
Re: Expiración de sesiones!

qué otra cosa se podría hacer ya que sin presionar el boton de desloguear y solo cerrar el navegador no puedo registrar nada
  #10 (permalink)  
Antiguo 22/12/2007, 18:39
Avatar de pragone  
Fecha de Ingreso: diciembre-2007
Ubicación: Madrid
Mensajes: 223
Antigüedad: 16 años, 11 meses
Puntos: 2
Re: Expiración de sesiones!

Hola, normalmente, esto no es un gran problema pues las sesiones se mantienen identificadas de parte del cliente a través de una Cookie.
En cualquier caso, puedes colocar tu una cookie en el navegador del usuario colocando como expire=0 esto hace que la cookie se elimine cuando el usuario cierre el navegador... y listo.

Para más info mira: http://es.php.net/manual/es/function.setcookie.php
  #11 (permalink)  
Antiguo 22/12/2007, 21:42
 
Fecha de Ingreso: febrero-2007
Mensajes: 104
Antigüedad: 17 años, 9 meses
Puntos: 0
Re: Expiración de sesiones!

ok, pero tambien necesito que guarde en una tabla la hora de salida....o una aproximación de la hora de salida del usuario. Ya que esto solo se registra si se presiona el link para cerrar sesión, pero si solo se cierra el navegador y no se presiona antes el link, no puedo registrar nada...gracias...
  #12 (permalink)  
Antiguo 23/12/2007, 16:26
 
Fecha de Ingreso: diciembre-2007
Mensajes: 1
Antigüedad: 16 años, 11 meses
Puntos: 0
Re: Expiración de sesiones!

En principio, creo que esta un poco mal redactada tu pregunta, pero más o menos te entendí, yo he leído sobre la propiedad window.closed pero la verdad no sé exactamente, deberías investigarla...saludos
  #13 (permalink)  
Antiguo 23/12/2007, 18:19
(Desactivado)
 
Fecha de Ingreso: diciembre-2006
Mensajes: 225
Antigüedad: 17 años, 11 meses
Puntos: 1
Re: Expiración de sesiones!

bueno lee esto a ver si te sirve

http://www.codigolandia.com/index-Ce...ador-php-49.tc
  #14 (permalink)  
Antiguo 23/12/2007, 18:47
Avatar de pragone  
Fecha de Ingreso: diciembre-2007
Ubicación: Madrid
Mensajes: 223
Antigüedad: 16 años, 11 meses
Puntos: 2
Re: Expiración de sesiones!

Ok. Entonces, la cuestión aquí es que quieres saber la hora del cierre de la sesión del usuario.

Verás, en ese caso, creo que el onUnload es la mejor opción que tienes. Te lo digo porque un usuario puede haberse ido de tu página sin, necesariamente cerrar la ventana del navegador.

Qué se me ocurre?
Que en el onUnload de la ventana tengas una invocación AJAX que indique que estás saliendo de la página. Ahora bien, esto también notifica si estás navegando a otra página de la misma área con sesión, por lo que el complemento es:
Notifica la salida siempre que ocurra un onUnload y SIN CERRAR la sesión actualizas la hora de "salida" de la sesión. En la próxima notificación que recibas, simplemente lo vuelves a actualizar y así vas "moviendo" la hora de salida hasta dar con la hora correcta en la que se hace la última salida.
Si quieres además (para aliviar la carga), simplemente ten un switch en el que indiques si debes notificar de la salida o no. Por defecto lo tienes en verdadero y haces que los enlaces internos tengan además un onClick que lo cambie a falso y así no notificas de cambios de página internos innecesarios.

No sé si me he explicado bien.. pero es un poco tarde para mi [sueño]
  #15 (permalink)  
Antiguo 23/12/2007, 19:12
Avatar de marcosr  
Fecha de Ingreso: agosto-2005
Ubicación: Montevideo, Uruguay
Mensajes: 451
Antigüedad: 19 años, 3 meses
Puntos: 5
Re: Expiración de sesiones!

Lo que dice pragone es exáctamente lo que yo dije y parece ser la mejor solución, nadie más ha planteado una idea que cumpla tan bien los requisitos como la nuestra.

__________________
Yo hago preguntas inteligentes para obtener respuestas rapidas, y vos?
(únete a la campaña !)
  #16 (permalink)  
Antiguo 23/12/2007, 19:51
Avatar de pragone  
Fecha de Ingreso: diciembre-2007
Ubicación: Madrid
Mensajes: 223
Antigüedad: 16 años, 11 meses
Puntos: 2
Re: Expiración de sesiones!

Uy... perdona marcosr... me había saltado tu post

Estoy 100% de acuerdo con tu respuesta ...
  #17 (permalink)  
Antiguo 24/12/2007, 19:48
 
Fecha de Ingreso: febrero-2007
Mensajes: 104
Antigüedad: 17 años, 9 meses
Puntos: 0
Re: Expiración de sesiones!

Hey de verdad gracias a todos, pero creo que los últimos comentarios son los que me parecen más acertados....y ya entendí que en cada pagina en el onunload vaya grabando la hora actual no importando si salga o no definitivamente del sitio...perfecto, solo que mi problema sería en saber cómo hacer esa función en el unonload porque la verdad no sé mucho de ajax....si me pudieran seguir ayudando, muchas gracias, y si no pues también muchas gracias, ya me han ayudado bastante...ah y felices fiestas a todos....
  #18 (permalink)  
Antiguo 24/12/2007, 20:59
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 21 años, 1 mes
Puntos: 45
Re: Expiración de sesiones!

No sé si AJAX podría ser la solución definitiva (¿funciona AJAX en el onunload?) pero quizás poniendo dos frames: Uno al 0% que se encargue de controlar sesiones, y el otro al 100% que sería tu web actual.

Cuando se cerrase el 0% (onunload de ese frame) significa que hemos cerrado el navegador.
¿Podría ser así?
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #19 (permalink)  
Antiguo 24/12/2007, 21:09
 
Fecha de Ingreso: febrero-2007
Mensajes: 104
Antigüedad: 17 años, 9 meses
Puntos: 0
Re: Expiración de sesiones!

Pues también puede ser, voy a intentar eso de los frames, gracias....
  #20 (permalink)  
Antiguo 24/12/2007, 21:23
Avatar de marcosr  
Fecha de Ingreso: agosto-2005
Ubicación: Montevideo, Uruguay
Mensajes: 451
Antigüedad: 19 años, 3 meses
Puntos: 5
Re: Expiración de sesiones!

pragone: todo bien.

fili9: Esa opción puede ser válida también, de todos modos si deseas leer algo de AJAX, puedes seguir el siguiente vínculo, realmente verás que es mucho más fácil de lo que parece, lo digo por experiencia.

FAQ's del foro de AJAX (forosdelweb.com)

El vínculo anterior me ha sido de ayuda, realmente verás que sin leer mucho podrías incluso hacer funcionar un sistema como el planteado por pragone y por mí en no más de 10 minutos y con un simple "copiar y pegar".

Saludos y espero que finalmente puedas tener el sistema que deseas.
__________________
Yo hago preguntas inteligentes para obtener respuestas rapidas, y vos?
(únete a la campaña !)
  #21 (permalink)  
Antiguo 24/12/2007, 22:50
 
Fecha de Ingreso: febrero-2007
Mensajes: 104
Antigüedad: 17 años, 9 meses
Puntos: 0
Re: Expiración de sesiones!

Gracias...voy a leer los artículos
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 14:10.