¿Cómo limitar 1 sesión/usuario en PHP?

Querría limitar el acceso a un área restringida, de tal modo que sólo accediera un mismo usuario una sola vez, ni siquiera repitiendo sesión local de navegador ni desde otro ordenador.
Las soluciones hasta ahora no me convencen (tabla en DB, escritura en txt...)porque lo que necesito es un chequeo instantáneo en el momento del intento de registro.
¿Sabrías cómo podría conocer el nombre de los usuarios activos? (Con el fin de compararlos con el intento de accesoa actual y denegar acceso si coincide)
¿Leyendo los "sess_"? ¿Cómo?

1 respuesta

Respuesta
1
Ten en cuenta que las sesiones están en varios ordenadores, y que cada ordenador puede tener varias sesiones abiertas, por tanto, no vas a saberlo de forma instantánea, como mínimo tienes que ir al servidor. En el servidor tendrías que tener ejecutándose constantemente un script que sirviese las peticiones de registro y apuntase los usuarios activos en cada momento. Como ves, no es viable.
Cada página web que abres en tu navegador es independiente del resto y no puedes acceder a las sesiones abiertas de otros navegadores, ni de otros ordenadores, aunque sean sobre el mismo servidor. Por lo menos yo no conozco la forma.
He encontrado un sitio donde preguntan algo parecido (en inglés) que quizá te sirva. En la página busca el texto "Stump the Crew".
http://www.developershed.com/newsletter/archives/2004-07-07.txt
La mejor forma es añadiendo un campo a la base de datos en el que indiques si el usuario está dentro o no. Una consulta a la base de datos no te la quita nadie, porque tienes que validar la contraseña. Por tanto, aprovechate y busca en la base de datos un registro con el nombre de usuario introducido, la contraseña, y que además no tenga sesión abierta. Si lo encuentras, no dejes abrir otra sesión. Si no lo encuentras, registras en la base de datos que ese usuario ya tiene sesión abierta.
Sigo buscando otra solución porque tu pregunta me ha parecido muy interesante, pero de momento no conozco más formas de las que sabes.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas