Es un poco dificil de hacer, pero no imposible porque yo he visto ese sistema en mas de un sitio, aunque no se exactamente como lo tienen programado.
Puede hacerse tanto usando sesiones como cookies, pero el problema es que cada navegador es independiente, es decir, cada navegador tiene sus propias sesiones y sus propias cookies, las cookies de IE no sirven para Firefox, y viceversa.
He visto 2 formas de lo que planteas:
1. En la que al loguear de nuevo invalida el login anterior haciendo que tenga que volver a loguearse, y si vuelve a loguearse entonces invalida al otro.
2. Una vez que uo esta logueado si intentas loguear desde otro navegador te dice que ya estas logueado o que alguien ya se ha loguado y esta en ese momento logueado, y hasta que no desloguee no te deja loguearte con otro navegador o desde otro ordenador incluso.
Supongo que tu quieres que pase lo de la segunda opcion. Nunca he hecho un sistema asi, ni se exactamente como esta programado, pero se me ocurre una forma, que si no me equivoco es la que usan algunos foros, por ejemplo, para mostrar quien esta logueado en los ultimos minutos.
Si guardas la fecha del ultimo cierre de sesion sabes si alguien ha iniciado sesion o no, y por tanto permitirle el acceso. Pero solo puedes registrar el cierre de sesion si le da al boton de salir, si cierra el navegador, la sesion se cierra, pero no podrias registrar la fecha a la que sucede eso (probablemente con javascript si se pueda, pero no lo domino mucho). Por tanto lo mejor es guardar la de inicio de sesion, esa siempre podras guardarla, y cada vez que recargue o visite un pagina de la web renovar esa fecha, como si hubiese acabado de iniciar sesion, luego estableces un limite de 5 minutos, por ejemplo, y si esta mas de 5 minutos sin recargar o visitar una pagina, puedes suponer que ya no esta usando la sesion, como si la hubiese cerrado, si le da especificamente a cerrar sesion si puedes guardar la fecha y por tanto al instante ya podrias iniciar sesion en otro navegador u ordenador. De esta forma evitas varios inicios de sesion simultaneos. Para diferenciar las sesiones te aconsejo crear un numero aleatorio y guardarlo en la base de datos, indicando que la sesion con ese numero aleatorio es la valida, pero tendrias que comprobar ese numero en cada visita ¿para que hacer eso? para evitar que en el caso de que pasen esos 5 minutos de margen, se inicie sesion en otro navegador y la sesion actual no hubiese cerrado el navegador y tras esos 5 minutos vuelva y se le de por logueado, creo que ese limite puede establecerse en sesiones, pero no recuerdo como porque no las uso casi nunca, yo soy mas de cookies, con cookies si se como hacerlo.
Bueno, no se si me explique bien o si captaste la idea... Si te quedan dudas de como hacerlo dimelo e intentare explicarlo mejor.
|