Comunidad de diseño web y desarrollo en internet online

cerrar sesion

Citar            
MensajeEscrito el 16 Nov 2007 01:39 am
hola a todos
Tengo un problemita con eso de las sesiones espero que alguien me pueda ayudar de antemano gracias
Tengo un sitio hecho en php donde el usuario tiene que logearse, dentro del sitio tengo un boton que se llama desconectar, pero bueno casi ningun usuario lo toca y cuando quiere salir de la pagina simplemente
cierra la ventana o escribe direccion en la barra de direcciones lo que me provoca que su sesion quede abierta y esto me provoca un problema como se podran imaginar, tengo un archivo que queca 15 minutos cierra todas estas sesiones que estan sin usar, pero lo que pretendo es cerrar automaticamente su sesion cuando cierre el navegador o cuando se cambie de pagina, lo hice con un
evento onunload de javascript ;este me llama un archivo php que destruye la sesion, pero tengo un inconveniente, este evento tambien se ejecuta cuando yo actualizo la pagina y por lo tanto destruye la sesion del usuario actual ,Pienso que se puede hacer si comparo la url anterior; es decir si es la misma quiere decir que solo la actualizo y no debe cerrar la sesion
alguien sabe como obtener la url de la pagina anterior para intentar hacer esto
o si alguien tiene otra solucion de lo agradecere mucho
Gracias

Por pako_mclr

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 Nov 2007 05:07 am
Tu problema no tiene solución :(

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 18 Nov 2007 12:01 am
Hola.

Como te comentan, tu problema no tiene una solución directa. Quizás podrías hacer lo siguiente, aunque creo que es un poco chapuzas. Podrías colocar dentro de la página un IFRAME que apunte a una página php y que se actualice cada pocos segundos (si tienes muchos visitantes quizás sobrecargue demasiado el sitio). Dentro de ese php programas la actualización de la sesión. De esta forma podrás saber en un intervalo de pocos segundos si ha cerrado el navegador, destruyendo la sesión (y evitando así forzar al refresco continuo de toda la página que sería contraproducente). Aunque nunca podrás saber en que momento exacto cierra el navegador.

Saludos.

Por javierav

22 de clabLevel



Genero:Masculino  

Córdoba (España)

firefox
Citar            
MensajeEscrito el 18 Nov 2007 03:03 am
pero se supone que cuando cierra el navegador, se termina la sesión, no?, si cambia de página, pues ya depende si quiere o no cerrar su sesión, pues puede regresar y no tener que iniciarla de nuevo, solo que la cierre y no regrese a la página donde inició la sesión.

Por master_of_puppetz

Claber

2483 de clabLevel

7 tutoriales
3 articulos

Genero:Masculino   Premio_Secretos

WebDev (Flex + PHP + JS)

firefox
Citar            
MensajeEscrito el 20 Nov 2007 05:12 am
antes que nada gracias por contestar a todos

voy a intentar lo de actualizar la sesión, cada ciertos segundos aunque tambien va depender si este archivo no afecta mucho al servidor por otro lado en el post anterior te comento que tienes razon efectivamente cada que cierras y abres un navegador la sesion ya no existe, el problema es que yo registro en mi base de datos las sesiones de mis usuarios pero con cada navegador que abren es una sesion nueva y muchas veces no cierran su sesion con un boton que yo puse solo cierran el navegador y ya, y otros simplemente la dejan abierta, lo que hago es si una sesion no tiene actividad por 15 min seguidos la sesion se destruye, pero en 15 minutos se abren muchas otras sesiones, lo que pretendo es cerrar la sesion cuando cierren el navegador y que registren de nuevo si quieren entrar otra vez pero no es tan facil como habia pensado.Y otro problema es que hay muchos usuarios ocupan un mismo login
gracias a todos y cualquier sugerencia es bien recibida

Por pako_mclr

15 de clabLevel



 

msie
Citar            
MensajeEscrito el 20 Nov 2007 07:17 am
Quizás deberías abordar el problema de otra manera, ¿en qué afecta que el usuario deje una sesión sin cerrar?.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 20 Nov 2007 12:21 pm
Hola.

Lo que tu haces de cerrar la sesión si no se actualiza en 15 minutos esta bien, es lo que se suele hacer. Efectivamente, en esos 15 minutos que pueden pasar como máximo desde que el usuario cierra el navegador hasta que la sesión se destruye, ese usuario puede abrir otro navegador o el mismo de antes e iniciar sesión otra vez. Y lo que quieres hacer es más fácil de lo que te piensas. Cuando un usuario cierra sesión, la sesión se destruye y no existe. Cuando la sesión caduca esta se destruye y no existe. Por tanto, si un usuario cierra el navegador sin cerrar sesión, hasta que el sistema la destruya esta estará abierta. Si en la sesión guardas los datos del usuario, podrás comprobar, cada vez que alguien hace login, si el usuario con el cual está intentando acceder se encuentra en la lista de sesiones. En ese caso, podrás terminar la sesión anterior e iniciar una nueva para ese usuario, con lo cual no tendrías más que una sola sesión por usuario. Evidentemente para hacer esto, necesitas gestionar las sesiones contra una base de datos, y no usando el sistema de php normal de sesiones (desde el cual no podrías acceder a la lista de usuarios). PHP tiene funciones para derivar las sesiones contra una base de datos, y también existen muchas clases externas para hacer esto, que personalmente es lo que prefiero. Una clase que crea sus propias sesiones y todo sin necesidad de usar el sistema de PHP. San Google nuevamente tendrá respuesta a eso. :wink:

Saludos.

Por javierav

22 de clabLevel



Genero:Masculino  

Córdoba (España)

firefox
Citar            
MensajeEscrito el 20 Nov 2007 11:17 pm
tengo en una tabla el registro de estas sesiones pero el problema esta en que muchos usuarios ocupan una misma cuenta a esta cuenta yo le llamo "generico" entonces se me complica revisar
si el usuario ya accedio al sistema porque tal vez ya este solo que quiere ingresar una persona distinta, por esto mismo yo quiero destriur su sesion cada que este cierre el navegador o cada que cambie de pagina esto mientras creo usuarios personalizados para que no existan dos personas con la misma cuenta.

yo creo que si debe de poder el problema es que todavia no se como :D pero sigo intentandolo
muchas gracias de verdad tomo todas las sugerencias

Por pako_mclr

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 21 Nov 2007 01:44 am
Hola.

Entonces... en vez de comprobar si el usuario está en la base de datos... ¿por qué no compruebas si está la IP? Supongo que ya sería mucha casualidad que sean todos usuarios de la misma red local. :)

Saludos.

Por javierav

22 de clabLevel



Genero:Masculino  

Córdoba (España)

firefox
Citar            
MensajeEscrito el 21 Nov 2007 02:33 am
es cierto no lo habia pensado solo me estaba quebrando la cabeza
es mas facil comprobar si existe la ip, de hecho es como yo evito que exista el llamado fishing o robo de sesion, tengo un archivo que funciona como header es decir se carga en todas las paginas, este archivo lo que hace es tomar la ip y el id de sesion en cada momento si estos coinciden con los que estan en la BD entonces puede seguir trabajando pero en caso de que con un programa se hayan robado el id entonces esta seguira siendo la misma pero no concide con la ip es entonces cuando se cierra automaticamente la sesion

Pero pasando a mi tema original voy a comprobar la ip del usuario y si ya existe que cierre las demas sesiones de su maquina es decir que solamente exista una sesion por maquina aunque hayan muchos usuarios ocupando la misma cuenta no se abriran mas sesiones de las necesarias que era lo que queria

Gracias por todo en verdad :D

Por pako_mclr

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 21 Nov 2007 03:10 am
pero recuerda que no todos tiene ip fija y si mas de dos entran desde un punto donde se comparte la ip publica, como los vas a diferenciar?, hay que tener en cuenta esos puntos tambien
Saludos!

Por master_of_puppetz

Claber

2483 de clabLevel

7 tutoriales
3 articulos

Genero:Masculino   Premio_Secretos

WebDev (Flex + PHP + JS)

firefox
Citar            
MensajeEscrito el 23 Nov 2007 09:54 pm
con tu problema se me ocurre algo pero con cookies... vere q hago y te aviso..! (aunq tengo mucho trabajojejeje)

Por jripper

228 de clabLevel

2 tutoriales

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 28 Nov 2007 12:59 am
gracias te agradezco cualquier ayuda

Por pako_mclr

15 de clabLevel



 

msie

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.