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
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...
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.
Entiendo, entonces quiero informar de que usaría PHP con xampp en codeIgniter.
Alguna sugerencia?
Cita de: hechicerd0 en 3 Julio 2017, 21:06 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.
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
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?
Espera, el juego es tuyo o tu lo juegas?
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.
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
Cita de: 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
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)
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
Cita de: 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
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.