Foros del Web » Programando para Internet » PHP »

Control de Usuarios

Estas en el tema de Control de Usuarios en el foro de PHP en Foros del Web. hola, pues yo tengo una tabla de usuarios, en donde tengo nombre de usuario,contraseña y los manejo con variables de sesion, bueno ya los usuarios ...
  #1 (permalink)  
Antiguo 01/06/2007, 15:23
Avatar de Stickmaster2004  
Fecha de Ingreso: septiembre-2004
Ubicación: Barranquilla
Mensajes: 568
Antigüedad: 19 años, 7 meses
Puntos: 0
Control de Usuarios

hola, pues yo tengo una tabla de usuarios, en donde tengo nombre de usuario,contraseña y los manejo con variables de sesion, bueno ya los usuarios entran al sistema segun estos valores sean ciertos, pero mi problema es el siguiente: una persona puede entrar 2 veces al sistema con el mismo nombre de usuario y contraseña, lo que quiero hacer yo es que cuando ya exista un usuario con su sesion abierta no pueda logaerse de nuevo, yo estoy utlizando el autenticador de cluster.

espero que me puedan ayudarme dandome una guia de como hacerlo, si tengo que hacer algun cambio en la tabla con un nuevo campo o si puedo controlar ello con las sesiones, les estaria muy agradecido si me pudieran ayudar.
__________________
Solo el que se basa en conocimiento basico y cultiva el aprendizaje obtendra sabiduria
  #2 (permalink)  
Antiguo 01/06/2007, 16:10
(Desactivado)
 
Fecha de Ingreso: diciembre-2006
Mensajes: 529
Antigüedad: 17 años, 4 meses
Puntos: 11
Re: Control de Usuarios

Lo que puedes hacer, segun lo que se me ocurre al boleo es:

crear una tabla LOGER con los campos ID_USUARIO, ID_SESSION.

Entonces cuando se loguea, si los datos son OK agregas en esta tabla el nombre del usuario y el id de la session que se abrió.

Pero antes de guardar los datos en esta tabla, corroboras que ese usuario no exista en la misma, y si existe actualizas el id de sessión y si no existe, lo ingresas.

Por último, si usas el autenticador de cluster en el encabezado de las páginas protegidas:

Código PHP:
require("aut_verifica.inc.php");
$nivel_acceso=10// Nivel de acceso para esta página.
if ($nivel_acceso <= $_SESSION['usuario_nivel']){
header ("Location: $redir?error_login=5");
exit;

agregas una gunción que busque el ID de sesión en la tabla LOGER para ese usuario. Entonces una vez encontrado el resultado comprara si el ID de sesión actual coincide con el de la base de datos. Si coincide le das el ok, si no coincide (el usuario ingresó por otra máquina o por otro navegador) entonces le das a session_destroy(); o sea, lo sacas del sistema.

Como conclusión, sólo podrá navegar el último que ingresa.

Espero te sirva.
  #3 (permalink)  
Antiguo 01/06/2007, 16:31
Avatar de Stickmaster2004  
Fecha de Ingreso: septiembre-2004
Ubicación: Barranquilla
Mensajes: 568
Antigüedad: 19 años, 7 meses
Puntos: 0
Re: Control de Usuarios

me parece buena la idea, el usuario ingresa e inmediatamente se me llena esta nueva tabla, con el identificador del usuario(id) y el de la sesion(session)
pues si otro usuario intenta entrar desde otro navegador le digo, ojo ya tienes otra sesion y no lo dejo entrar al sistema, pero......., que pasa cuando el usuario estando en su session cierra la ventana del navegador y se va, sin presionar el boton de cerrar sesion, pues ese dato me queda en la tabla y el usuario va a querer entrar y no va a poder, la pregunta es: como hago yo para controlar el evento de que me cierre la ventana del navegador y que a su vez me borre esos datos de la tabla.

por que con el boton es facil controlar el evento.
__________________
Solo el que se basa en conocimiento basico y cultiva el aprendizaje obtendra sabiduria
  #4 (permalink)  
Antiguo 01/06/2007, 17:53
(Desactivado)
 
Fecha de Ingreso: diciembre-2006
Mensajes: 529
Antigüedad: 17 años, 4 meses
Puntos: 11
Re: Control de Usuarios

No, debes hacerlo como te sugerí para que no haya problemas.
Por qué?

La idea es que navegue el último que ingrese. Si el usuario ingresa por otro navegador o ventana o máquina, la sesón anterior debe caducar.

1) Así funciona el msn, si dejo sin querer la sesion abierta en un cibercafé e ingreso desde mi casa automáticamente la sesiópn del cibercafé caduca y se activa la de mi casa.

Si no fuera asi debería volver urgente al cibercafé y tratar de cerrar la sesión, sería una locura.

2) Cuando un usuario intente entrar por otra ventana, navegador o máquina debes darle el ok pero las otras conexiones caducan automaticamente. Siempre podrá navegar el ultimo que ingresa.

3) Supongamos que el usuario cierra la ventana sin cerrar la sesión, entonces automáticamente, al cerrar la ventana la sesión se da por terminada. Eso es ya algo automático entre las sesiones y los navegadores.

4) No importa que los datos queden en la base, pues cuando vuelva a ingresar los mismos serán actualizados. De úlimta a la tabla le agregas un campo mas DATETIME y con un cron la recorres y las conexiones de más de 1 día las eliminas.
  #5 (permalink)  
Antiguo 07/06/2007, 15:15
Avatar de Yriaj  
Fecha de Ingreso: marzo-2007
Mensajes: 12
Antigüedad: 17 años
Puntos: 1
Exclamación Re: Control de Usuarios

hola user max,
estoy intentando utilizar tu consejo me parece una excelente idea

aca esta lo que estoy haciendo pero no me funciona bien

Código PHP:
 function iniciar_session(){
     
$sql_login="Select * from loguser where id_usuario = ".$this->getUser();
     
$id_session=session_id();
     
$fecha_hora=date('Y-m-d').' '.date("H:i:s",time()); 
       if (!
$result mysql_query($sql_login)) {
         
// insert
         
$sql_insert=sprintf("Insert into loguser values('%s','%s','%s')",$this->getUser(),$id_session,$fecha_hora);
         
$result2=mysql_query($sql_insert);
        } else {
           
//update
          
$sql_insert=sprintf("Update loguser set id_session='%s', fecha_hora='%s'",$id_session,$fecha_hora);
          
$result2=mysql_query($sql_insert);
        }    
    }
    
    function 
check_session(){
       
$id_session=session_id();
       
$sql_session=sprintf("select * from loguser where id_session='%s' and id_usuario='%s'",$id_session,$this->getUser());
       
$resul_session=mysql_query($sql_session);
       if (
mysql_num_rows($resul_session)>0){
      
// echo "si";
         
return true;
       }else{
         
session_destroy();
         
$this->setTheMsg($this->messages(4));         
         
header("Location:h t t p : / / ".$_SERVER['HTTP_HOST']."/".$this->directorio.$this->pagina);    
         return 
false;
       }
        
    }
function 
verificar_page(){
 if (isset(
$_SESSION['user']) && isset($_SESSION['pw'])) {
   
$this->check_session(); 
}

dejo la session abierta en firefox e intento loguearme por internet explorer y no me deja...

y lo q deberia es caducar la session de firefox y dejarme loguear por IE
o por lo menos eso es lo que me gustaria
  #6 (permalink)  
Antiguo 08/06/2007, 07:28
Avatar de Yriaj  
Fecha de Ingreso: marzo-2007
Mensajes: 12
Antigüedad: 17 años
Puntos: 1
Sonrisa Re: Control de Usuarios

bueno ya lo resolvi el codigo esta bien, solo habia q remplazar por mysql_num_rows en la funcion iniciar_session()
lo estaba colocando mal!!

gracias por la idea
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:29.