Foros del Web » Programando para Internet » PHP »

restringir el acceso de diferentes personas con mismo usuario

Estas en el tema de restringir el acceso de diferentes personas con mismo usuario en el foro de PHP en Foros del Web. Hola, Me gustaría saber si es posible restringir el acceso a una web porque se detecta que ya existe una persona utilizando el usuario/contraseña del ...
  #1 (permalink)  
Antiguo 15/02/2006, 07:00
 
Fecha de Ingreso: marzo-2002
Mensajes: 188
Antigüedad: 15 años, 9 meses
Puntos: 0
restringir el acceso de diferentes personas con mismo usuario

Hola,
Me gustaría saber si es posible restringir el acceso a una web porque se detecta que ya existe una persona utilizando el usuario/contraseña del que quiere acceder.
La cosa es que tengo que crear un usuario/contraseña de acceso a una web para que lo compartan 10 personas. El problema es que esas 10 personas, si quieren, les podrán dar los datos de acceso a más usuarios. Entiendo que eso es incontrolable, pero, se puede detectar de alguna manera si hay 1, 5 o 50 personas que han entrado con los mismos datos de usuario/contraseña y que si hay más de 10 no deje entrar a nadie?
Gracias y saludos,
  #2 (permalink)  
Antiguo 15/02/2006, 07:13
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Como tu dices que gestionas ya un sistema de usuarios con su respectivo "login" .. y esa es la "puerta" por donde todos pasan, en ese script que valida tu usuario puedes usar un "flag" (bandera) que determine que ya otro usuario hizo login y no permitir nuevos "login" hasta que el primer usuario salga del sistema.

Se trataría de que al hacer "login" tu usuario en tu BBDD para ese usuario le coloques un "1" por ejemplo .. así para próximos login (en general con todo login) verificas que el par usuario/contraseña sea correcto .. pero también que ese "online" (campo estado, flag ... como lo quieras llamar) tenga un "0" para permitir nuevos "login". El problema vendrá cuando el usuario no salga por la "salida" de tu sistema, en esos casos se tendría que usar las técnicas de "tiempo de inactividad" para determinar o considerar por "tiempo" si el usuario está en el sistema o ya se considera que no lo está.

Revisa este tema .. se hicieron y propusieron algunas alternativas:
http://www.forosdelweb.com/f18/aporte-permitir-solo-1-instancia-usuario-369361/

Un saludo,
  #3 (permalink)  
Antiguo 15/02/2006, 08:01
 
Fecha de Ingreso: marzo-2002
Mensajes: 188
Antigüedad: 15 años, 9 meses
Puntos: 0
Creo que te entiendo, aunque no se si podré controlarlo bien porque en este caso concreto tengo 10 personas que usan el mismo usuario/contraseña (por motivos de facturación se tienen que considerar el mismo usuario y compartir login/pass). En este caso, si hubiese un mecanismo fiable que al abandonar la aplicación reste 1 a ese flag lo podría controlar bien. Por ejemplo, desde el Logout de la aplicación lo puedo contolar. Pero si como dices cierran la ventana del navegador, ese flag continuaria con el mismo valor y no podria saber si están conectadas las personas que me marca el flag. Imagina que las 10 personas abandonan la aplicación cerrando el navegador (que de hecho es lo más probable). El flag me marcará 10 y no habrá ninguna. Entonces aunque lo pudiese controlar por "timeout", volvería a ser un control fictíceo a no ser que el "timeout" resetee el flag a 0, la cual cosa tampoco me acaba de convencer.
Por otro lado el tema del control por IP tampoco puedo hacerlo porque precisamente los 10 usuarios pertenecen a la misma empresa y me llegaría la misma IP, verdad?
No se, seguiré dándole vueltas.
Cualquier idea será bienvenida.

Gracias de todos modos y saludos,
  #4 (permalink)  
Antiguo 15/02/2006, 08:34
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Entonces aunque lo pudiese controlar por "timeout", volvería a ser un control fictíceo a no ser que el "timeout" resetee el flag a 0, la cual cosa tampoco me acaba de convencer.
Con la técnica de "timeout" no se controla un flag y su estado . sino que es en base a ese tiempo que el usuario ingresó al sistema y que en cada iteracción con tus scripts lo actualizas es el que determinarías si el usuario ha estado cierto tiempo sin actividad y por ende podrías "considerar" que el usuario salió del sistema no por tu "logout".

Por supuesto esto plantea el mismo problema que el flag .. sólo que el flag sólo podría cambiarlo de estado un administrador del sistema .. y el caso del "timeout" habría que "esperarse" como máximo el tiempo que tu determines como que el usuario no ha presentado actividad en tu sistema: que no ha movido páginas, ejecutado scripts, enviado formularios .. etc ..

Cita:
Por otro lado el tema del control por IP tampoco puedo hacerlo porque precisamente los 10 usuarios pertenecen a la misma empresa y me llegaría la misma IP, verdad?
Bueno . .si estás -dentro- de una LAN . .cada uno tendrá su IP (cada PC o estación de trabajo) .. ahora, si los "ves" desde fuera de esa LAN y todos pasan por un proxy ahí aparecenran al otro lado como una misma entidad (la IP que tenga ese proxy en su conexión).

Realmente si es vital que una misma contraseña no se use -a la vez- podrías forzar a IP cliente -> cierto usuario concreto (hablando de que estamos -dentro- de una LAN). Pero si necesitas o debes permitir que cualquier usuario de tu sistema haga su "login" en el PC que tenga disponible en esa LAN .. entonces no puedes forzar esto.

En resumen . si necesitas ese control de 1 Usuario que haga login por PC y que lo pueda hacer donde necesite (PC). Vas a tener que tener una "entidad" (cargo, persona, Administrador ..) que se encargue de "liberar" ese usuario (cambiar ese flag de estado) en caso de conflictos: cierre de sesión no por tu logout .. cortes de energía electrica .. etc. Todas las otras soluciones tienen sus "falencias" por algún lugar.

Un saludo,
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 16:09.