Foros del Web » Programando para Internet » PHP »

Problema con autentificacion de Usuarios

Estas en el tema de Problema con autentificacion de Usuarios en el foro de PHP en Foros del Web. Hola foreros,, se que es algo simple pero estoy buscando y no encuentro nada , ¿como se hace para que cuando un usuario entra con ...
  #1 (permalink)  
Antiguo 26/02/2008, 17:43
 
Fecha de Ingreso: agosto-2005
Mensajes: 83
Antigüedad: 18 años, 8 meses
Puntos: 0
Pregunta Problema con autentificacion de Usuarios

Hola foreros,,

se que es algo simple pero estoy buscando y no encuentro nada ,

¿como se hace para que cuando un usuario entra con su login y clave a la aplicacion, no se pueda acceder a la aplicacion desde otra maquina con ese mismo login mientras el usuario esta conectado?

gracias anticipadas
  #2 (permalink)  
Antiguo 26/02/2008, 18:50
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Re: Problema con autentificacion de Usuarios

prueba creando una sesion al comenzar el codigo de la pagina


Código PHP:
session_start(); 
y tenlo identificado mediante:


Código PHP:
<?php

if (isset($_SESSION['k_username'])) 
{
echo 
'Hola, ';
echo 
'<b>'.$_SESSION['k_username']. '</b>.';


    echo 
'<a href="salir.php">salir</a>';
    }
?>
prueba asi a ver que pasa.
  #3 (permalink)  
Antiguo 26/02/2008, 20:10
 
Fecha de Ingreso: agosto-2005
Mensajes: 83
Antigüedad: 18 años, 8 meses
Puntos: 0
Re: Problema con autentificacion de Usuarios

Gracias amigo pero no es lo que busco, lo que busco es que cuando el usuario se logee, de alguna forma se bloquee este usuario para que nadie mas pueda entrar con ese mismo usuario a la vez desde otra maquina , alguna idea????, gracias
  #4 (permalink)  
Antiguo 26/02/2008, 21:34
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Problema con autentificacion de Usuarios

Eso debes hacerlo con bases de datos. Cuando un usuario se loguea, creas un registro en la base de datos si es que ya no existe. En caso de que exista, es que el usuario se ha logueado desde otra máquina, por lo tanto, el nuevo login no procede. Al cerrar sesión borras ese registro y listo.

Ahora, el problema viene si el usuario cierra su ventana sin haber cerrado la sesión. Al hacer eso, impedirás que el usuario pueda volver a loguearse desde cualquier máquina. Para solucionarlo, usa CRON JOBS o en su defecto, mediante un script en todas tus páginas, borras todos los datos de la tabla que exedan un tiempo máximo, por ejemplo, 5 minutos desde la ultima actividad. Es un arma de doble filo, pero vale.

Busca en HotScripts o en Google en sí. Hay muy buenos manuales/scripts para manejar las sesiones del sitio

Un saludo,
  #5 (permalink)  
Antiguo 26/02/2008, 22:01
 
Fecha de Ingreso: agosto-2005
Mensajes: 83
Antigüedad: 18 años, 8 meses
Puntos: 0
Re: Problema con autentificacion de Usuarios

hola, entiendo algo asi tenia pensado, pero.... y como seria lo del cron job, osea una tarea que se ejecute cada segundo y que mire si el usuario no esta logueado y borra el registro de la tabla?, me podrias explicar esto por favor?, muchas gracias por tu respuesa
  #6 (permalink)  
Antiguo 27/02/2008, 13:48
 
Fecha de Ingreso: agosto-2005
Mensajes: 83
Antigüedad: 18 años, 8 meses
Puntos: 0
Re: Problema con autentificacion de Usuarios

alguien me podria explicar cual seria la logica del cronjob'?
  #7 (permalink)  
Antiguo 27/02/2008, 22:08
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Problema con autentificacion de Usuarios

El CRON JOB es un "trabajo" (un script) que se va a ejecutar cada cierto tiempo. Si tu servidor te lo proporciona, claro está. Ahora, lo que deseas hacer es, como te dije, poco seguro, puesto que nunca sabrás si un usuario realmente está en linea o cerró su explorador sin haber cerrado una sesión. Puedes usar AJAX para realizar un acción en el evento onUnload de la página, que borre el registro que te dije que crearas, pero no es seguro que funcione en la totalidad de los casos, así que mejor le hacemos caso a Murphy.

Qué tanto conocimiento tienes sobre PHP, sesiones y bases de datos?

Un saludo,
  #8 (permalink)  
Antiguo 27/02/2008, 22:39
 
Fecha de Ingreso: agosto-2005
Mensajes: 83
Antigüedad: 18 años, 8 meses
Puntos: 0
Re: Problema con autentificacion de Usuarios

Hola, gracias por responder, mira todo el dia estuve investigando y haciendo pruebas de lo del cron job, por un momento pense que lo habia logrado, pero luego me tope con otro problema, me explico

hice que cuando el usuario se loguea se registre el sessionid y la fechahora de la accion, y en cada accion del usuario, se actualiza la fechayhora de acuerdo al sessionid, y el cronjob se ejecuta cada minuto, lo que hace este es verificar si no ha pasado mas de 5 minutos de la ultima accion, si ha sobrepasdo 5 minutos borra el registro y se puede acceder desde la otra pc,

hasta ahi todo bien, pero el problema esta en que si el mismo usuario cierra el navegador y luego por x motivos quiere volver a entrar no podra hasta que pasen los 5 minutos para que se borre el registro de la tabla y eso seria muy raro, se entiende?, bueno por este problema y por lo que dices que no es seguro creo que voy descartando esta opcion del cron job, a menos que me sugieran otra logica :S

Me evitaria muchos problemas si pudiera llamar una simple funcion en php cuando el usuario cierre el navegador, me dices que con ajax pero no tengo mucho conocimiento, me podrias dar una mano, talvez un ejemplo,

gracias por la colaboracion , salu2 :)
  #9 (permalink)  
Antiguo 27/02/2008, 22:57
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Problema con autentificacion de Usuarios

Haber, con AJAX puedes hacer que se ejecute un script PHP (o cualquier lenguaje del lado del servidor), digámoslo así, con javascript (cliente). Puedes dar una mirada o preguntar en el foro de AJAX. Pero primero, búscate y lee manual ajax

Ahora, una vez que tengas una idea de AJAX, leéte este post:

http://www.forosdelweb.com/f18/actua...egador-555642/

Usando AJAX podrás hacer que se ejecute un script PHP que actualice tu base de datos al cerrar el navegador, mediante el evento onUnload del tag <body>. Como te dije en el mensaje anterior, no es lo más adecuado, pues puede no funcionar como esperas en todos los casos.

Si quieres mi opinión, nunca estuve de acuerdo con bloquear usuarios por motivos como ese, créeme que se causará más de un problema. Como tú dices, habrá situaciones en las que se bloquee un usuario, y este tendrá que esperar un tiempo X para volver a acceder.

Un saludo,
  #10 (permalink)  
Antiguo 27/02/2008, 23:04
 
Fecha de Ingreso: enero-2008
Ubicación: Chaco
Mensajes: 116
Antigüedad: 16 años, 3 meses
Puntos: 0
De acuerdo Re: Problema con autentificacion de Usuarios

Puedes utilizar esto, tal vez t sirva, lo que hace es modificar el archivo de configuracion php.ini y hace que compruebe la sesion cada 0 segundos por lo tanto cuando el usuario se va de la pagina o cierra el navegador la sesion finaliza
ahi va:
Código PHP:
<? 
//si es necesario cambiar la config. del php.ini desde tu script 
ini_set("session.use_only_cookies","1"); 
ini_set("session.use_trans_sid","0"); 

//iniciamos la sesión 
session_name("loginUsuario"); 
session_start(); 
session_set_cookie_params(0"/"$HTTP_SERVER_VARS["HTTP_HOST"], 0); 
//cambiamos la duración a la cookie de la sesión 

//antes de hacer los cálculos, compruebo que el usuario está logueado 
//utilizamos el mismo script que antes 
if ($_SESSION["autentificado"] != "SI") { 
    
//si no está logueado lo envío a la página de autentificación 
    
header("Location: index.php"); 
} else { 
    
//sino, calculamos el tiempo transcurrido 
    
$fechaGuardada $_SESSION["ultimoAcceso"]; 
    
$ahora date("Y-n-j H:i:s"); 
    
$tiempo_transcurrido = (strtotime($ahora)-strtotime($fechaGuardada)); 

    
//comparamos el tiempo transcurrido 
     
if($tiempo_transcurrido >= 600) { 
     
//si pasaron 10 minutos o más 
      
session_destroy(); // destruyo la sesión 
      
header("Location: index.php"); //envío al usuario a la pag. de autenticación 
      //sino, actualizo la fecha de la sesión 
    
}else { 
    
$_SESSION["ultimoAcceso"] = $ahora
   } 

?>

Otra manera sería con javascript al cerrar el navegador llamas la función, pero ya no corresponde a este Foro...
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:14.