Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: hechicerd0 en 3 Julio 2017, 16:05 pm



Título: Cerrar sesión de otro navegador al abrir una nueva
Publicado por: hechicerd0 en 3 Julio 2017, 16:05 pm
Supongamos que entro en un juego online con mi cuenta desde un ordenador A.

Ahora entro desde el ordenador B.

Cómo habría que programar que A recibiera "algo" que le dijera que ya no está disponible desde ahi sino desde B.

Necesito algún tipo de guia para luego programarlo, no se me ocurren ideas


Título: Re: Cerrar sesión de otro navegador al abrir una nueva
Publicado por: engel lex en 3 Julio 2017, 16:10 pm
usualmente eso lo debe hacer es el servidor de juego, pero para tu opción, tendrías que comunicarte de una pc a la otra de una u otra forma...


Título: Re: Cerrar sesión de otro navegador al abrir una nueva
Publicado por: MinusFour en 3 Julio 2017, 21:03 pm
Simplemente invalidas la sesión del ordenador A. El cuando y el como dependerá de que tecnología estés usando tanto del lado de cliente como del servidor.


Título: Re: Cerrar sesión de otro navegador al abrir una nueva
Publicado por: hechicerd0 en 3 Julio 2017, 21:06 pm
Entiendo, entonces quiero informar de que usaría PHP con xampp en codeIgniter.

Alguna sugerencia?


Título: Re: Cerrar sesión de otro navegador al abrir una nueva
Publicado por: MinusFour en 3 Julio 2017, 21:18 pm
Entiendo, entonces quiero informar de que usaría PHP con xampp en codeIgniter.

Alguna sugerencia?

En la base de datos guarda la ID de la sesión cuando se conecte la persona a la cuenta. Si se conecta alguien mas, recojes la ID pasada, borras la sesión, le creas una nueva sesión al nuevo dispositivo y listo.


Título: Re: Cerrar sesión de otro navegador al abrir una nueva
Publicado por: ivancea96 en 3 Julio 2017, 21:18 pm
Cuando se conecte alguien con una cuenta, miras en *una lista de cuentas conectadas* si ya está conectado. De ser así, la sesión que estaba conectada la cierras, y abres la nueva. Es un ejemplo, depende de cómo lo hagas exactamente. En cualquier caso, siempre deberías tener un enlace "sesión -> cuenta", así que no habría problema. Otra opción, en caso de que, sabiendo la cuenta, no uedas "acceder" a la sesión,, sería guardar en la informacion de la cuenta conectada, una ID de la sesión, así, la proxima vez que la sesion antigua trate de conectarse, verá que no es la misma ID, y se cerrará.

Es muy abstracto, así que dpeende :D


Título: Re: Cerrar sesión de otro navegador al abrir una nueva
Publicado por: hechicerd0 en 4 Julio 2017, 10:34 am
Vale, basandome en vuestras sugerncias se me ocurre lo siguiente:

Tengo guardado en base de datos en todo momento todos los usuarios que están en linea.

Cada vez que un usario se conecte, comprobaría si está en linea, si es asi, mira su tokken, si el tokken que tiene es el mismo que el de la session (es que no ha relogueado, esta en el mismo pc), si el tokken que tiene es diferente (porque al ahcer login se generaria un tokken), entonces cambia el tokken del usario en linea por otro.

En el otro ordenador entonces, cada vez que se actualice la página, comprueba que el tokken que tiene la sesion es el mismo que hay en la base de datos, si no lo es, entonces ejecuta el logut.

El problema que veo es que ha de ir a la base de datos a comprobar el tokken cada minuto digamos, si tenemos muchos usuarios, eso son muchos selects, que no creo que influya mucho pero habría alguna otra manera?



Título: Re: Cerrar sesión de otro navegador al abrir una nueva
Publicado por: engel lex en 4 Julio 2017, 13:24 pm
Espera, el juego es tuyo o tu lo juegas?


Título: Re: Cerrar sesión de otro navegador al abrir una nueva
Publicado por: hechicerd0 en 4 Julio 2017, 14:22 pm
El juego es mio, esta al 90% pero estoy reprogramandolo y corrigiendo cosas desde hace meses.

www.xfantasyonline.es <-- es la versión antiuga y PARADA, yo estoy en local haciendo mil cambios, pero claro, lo hago todo absolutamente yo y solo y tampoco soy un pro, tengo 23 años, llevo 2 desarrollandolo y demás.

Acepto ayudas jaja pero quiero aprender antes de todo y mostrar algo que esta 100% hecho por mi.



Título: Re: Cerrar sesión de otro navegador al abrir una nueva
Publicado por: engel lex en 4 Julio 2017, 15:07 pm
ahh si es tuyo hubieras aclarado -.- estamos asumiendo que es que tu abres un juego en 2 pc diferentes y quieres una infraestructura aislada a este...

en lugar de manejar las sesiones por variable de sesion solamente, las validas a mano, esto para hacerlo simple puedes hacerlo en una tabla de sql, donde tengas

usuario|cookie|huella

donde usuario es indice unico, lo que haces es si no exíste el usuario, se crea, si exíste se reemplaza, así solo puede haber una instancia del usuario por vez, porque al navegador viejo entrar, ya su cookie no es la valida


Título: Re: Cerrar sesión de otro navegador al abrir una nueva
Publicado por: hechicerd0 en 4 Julio 2017, 15:29 pm
ahh si es tuyo hubieras aclarado -.- estamos asumiendo que es que tu abres un juego en 2 pc diferentes y quieres una infraestructura aislada a este...

en lugar de manejar las sesiones por variable de sesion solamente, las validas a mano, esto para hacerlo simple puedes hacerlo en una tabla de sql, donde tengas

usuario|cookie|huella

donde usuario es indice unico, lo que haces es si no exíste el usuario, se crea, si exíste se reemplaza, así solo puede haber una instancia del usuario por vez, porque al navegador viejo entrar, ya su cookie no es la valida

Hmm pero eso no quita al otro usuario del sistema no?

Perdona mi ignorancia pero yo quiero dejarme la session abierta en un ordenador y al entrar desde otro pc, la primera session haga un logout.

O que la session expire en X tiempo y haga un logout (esto en codeigniter tiene un parametro de expiración pero no se porque no me funciona)



Título: Re: Cerrar sesión de otro navegador al abrir una nueva
Publicado por: engel lex en 4 Julio 2017, 15:48 pm
esto no destruye al usuario... es solo una validación para respaldar la sesión, si la validación no coincide, simplemente la sesión se cierra y listo



Título: Re: Cerrar sesión de otro navegador al abrir una nueva
Publicado por: dato000 en 4 Julio 2017, 16:35 pm
esto no destruye al usuario... es solo una validación para respaldar la sesión, si la validación no coincide, simplemente la sesión se cierra y listo



El problema de ello es que al usar tanta cookie se pueden enredar en el servidor a menos que se usen hilos o sesiones async, estas ultimas solo las he visto para Visual Studio. Así que si no validas correctamente que usuario necesitas deslogear, puedes terminar usando una sesión que no es la que se debe o peor aún, con datos de las sesiones truncadas.

El problema es que php, pues no es mi fuerte para ese tipo de validación, si no se ofrece un mapeado y un sistema de mapeado supongo que lo que te queda es usar SQL para establecer un registro activo, en el que puedes usar un boolean para determinar si el usuario esta dentro, y cuando esta loegado no deja acceder a la sesión desde otra página, pero el problema es que tu quieres deslogearlo desde otra y relogearlo, supongo que podria funcionar ampliando ese tipo de registro.