Foros del Web » Programando para Internet » PHP »

Como hacer que el usuario se loguee una sola vez??

Estas en el tema de Como hacer que el usuario se loguee una sola vez?? en el foro de PHP en Foros del Web. Hola, tengo echo un login en php que lo que hace es intentar una conexion con una base de datos sql server 2000 y si ...
  #1 (permalink)  
Antiguo 12/05/2004, 17:08
 
Fecha de Ingreso: marzo-2003
Mensajes: 11
Antigüedad: 21 años, 8 meses
Puntos: 0
Como hacer que el usuario se loguee una sola vez??

Hola, tengo echo un login en php que lo que hace es intentar una conexion con una base de datos sql server 2000 y si esa conexion da error entonces el usuario y contraseña son incorrectas. Eso funciona barbaro, pero ahora lo que quiero hacer es que si ese usuario ya esta logueado, que no lo deje volver a loguearse hasta que se desconecte el que ya esta conectado.
Osea, que ese nombre de usuario se pueda conectar una vez por vez.
Trabajo con Apache 2, PHP 4.3.6 y Microsoft SQL server 2000.

Espero que alguien me pueda ayudar, desde ya muchas gracias...

Nano.
  #2 (permalink)  
Antiguo 12/05/2004, 20:36
Avatar de sism82  
Fecha de Ingreso: octubre-2003
Ubicación: Guadalajara
Mensajes: 865
Antigüedad: 21 años, 1 mes
Puntos: 1
no he manejado sql server, pero creo que es lo de menos, simplemente has una tabla que se llame algo asi como logeados y ahi vas e insertas un registro cada vez que alguien entre y cuando entre de nuevo, si ya está registrado no lo deja. El problema es que no todos los usuarios dan click a Logout, y por lo tanto no puedes saber exactamente cuando un usuario abandona la sesión. Pero con Js puedes hacer que al cerrar la ventana te abra otra donde lo saque de sesión y borre el registro en la tabla logeados. Y aparte, definir un tiempo de expiración de la sesión por inactividad. Es decir, si el usuario intenta hacer algo después de mucho tiempo (para eso tienes que registrar su hora de entrada) que no lo deje y borre el registro en logeados.

Me explico? es la idea... tu lo adaptas a tus necesidades, saludos..
  #3 (permalink)  
Antiguo 12/05/2004, 21:14
 
Fecha de Ingreso: marzo-2003
Mensajes: 11
Antigüedad: 21 años, 8 meses
Puntos: 0
si, gracias por responderme. Era algo asi lo que tenia pensado, pero tenia ese problema de que nunca se cuando se cierra la sesion porque no todos cierran haciendo el logout. Lo del js es muy bueno, pero tendria que ponerlo en todas las paginas. Al igual que definir el tiempo de expiración de sesion por inactividad, cada vez que entre en una pagina tendria que verificar si paso ese tiempo, si no paso renovlarlo y si paso decirle que se loguee nuevamente.
Yo tenia algo pensado pero nose si se puede en PHP, lo que yo decia era hacer algo asi como un vector que sea accesible para todos los que entran donde cada vez que se inicie una session en PHP ingrese el nombre de usuario, entonces, cada vez que alguien quiere entrar se fija en ese vector si el nombre ya existe y cuando se cierra la session lo borra. Porque fijate que cuando se cierra el explorer, la session se deshace y te pide que ingreses de nuevo el usuario y contraseña. Es medio confuso, se entiende??
  #4 (permalink)  
Antiguo 12/05/2004, 21:17
 
Fecha de Ingreso: marzo-2003
Mensajes: 11
Antigüedad: 21 años, 8 meses
Puntos: 0
osea, nose si quedo claro pero lo que quise preguntar es si no hay como un evento cuando se cierra la session, seria como un "onclose" o algo asi pero con sessiones.
  #5 (permalink)  
Antiguo 12/05/2004, 21:33
 
Fecha de Ingreso: agosto-2003
Ubicación: aca
Mensajes: 33
Antigüedad: 21 años, 3 meses
Puntos: 0
buenas

cuidado con la solución de usar onunload u onbeforeunload de js para abir otra ventana y que esta que cierre la sesion. sin ir mas lejos, la barra de google no permite que el explorador haga eso, tampoco otros programillos anti pop up.

yo usaria una tabla "logueados" donde en cada pagina que el usuario visite se grabe el "now". luego mediante php me fijo cual es el ultimo "now" de los usuarios de la tabla. si la diferencia de tiempo es de X minutos, lo borro y listo. si el usuario aun sigue en la tabla "logueados", no permito que se re registre (je) nuevamente (valga la repugnancia...)

eso si, deberias llamar a estos precedimientos en todas las paginas de tu aplicacion

suerte!!
juan
__________________
que sea rock!
  #6 (permalink)  
Antiguo 12/05/2004, 21:43
 
Fecha de Ingreso: marzo-2003
Mensajes: 11
Antigüedad: 21 años, 8 meses
Puntos: 0
esta bien, es una buena alternativa, pero lo que yo dije no existe no??? osea, no hay algo asi como un onunload de sessiones??
  #7 (permalink)  
Antiguo 12/05/2004, 21:53
 
Fecha de Ingreso: agosto-2003
Ubicación: aca
Mensajes: 33
Antigüedad: 21 años, 3 meses
Puntos: 0
en asp si, en php no

suerte!
juan
__________________
que sea rock!
  #8 (permalink)  
Antiguo 12/05/2004, 22:10
 
Fecha de Ingreso: marzo-2003
Mensajes: 11
Antigüedad: 21 años, 8 meses
Puntos: 0
uuuu, me mataste
y existe algo asi como verificar si una session y esta activa??? Porque si existe lo que puedo hacer es guardar el session_id en la tabla y verificar si sigue activa cuando alguien quiere entrar con el mismo nombre de usuario.
simplemente por curiosidad, si podes, decime como se hace eso del onunload de sessiones en ASP. Gracias, saludos....
  #9 (permalink)  
Antiguo 12/05/2004, 22:18
Avatar de sism82  
Fecha de Ingreso: octubre-2003
Ubicación: Guadalajara
Mensajes: 865
Antigüedad: 21 años, 1 mes
Puntos: 1
las sesiones con php no te van a administrar tu base de datos, me explico, php ciertamente asigna un id de sesión, pero, igual si alguien entra con el mismo nombre de usuario y password le asigna otro id. Y no veo problema con poner la validación de sesión en PHP, después de todo debes tener una plantilla, nada mas cambias esa plantilla y se te cambian todas las webs, o no tienes la plantilla?
  #10 (permalink)  
Antiguo 12/05/2004, 22:20
 
Fecha de Ingreso: marzo-2003
Mensajes: 11
Antigüedad: 21 años, 8 meses
Puntos: 0
perdon, pero que es una plantilla???
y yo no decia que php me administre la base de datos, sino preguntaba a ver si habia alguna funcion para ver que sessiones estan activas. Gracias por la ayuda
  #11 (permalink)  
Antiguo 12/05/2004, 22:23
 
Fecha de Ingreso: marzo-2003
Mensajes: 11
Antigüedad: 21 años, 8 meses
Puntos: 0
de hecho ahora me pregunto, como hacen los foros tipo phpBB para saber quienes estan conectados en el momento y cuando cierran la ventana ya los pone como desconectados??
  #12 (permalink)  
Antiguo 12/05/2004, 23:50
Avatar de sism82  
Fecha de Ingreso: octubre-2003
Ubicación: Guadalajara
Mensajes: 865
Antigüedad: 21 años, 1 mes
Puntos: 1
una plantilla es un documento que te sirve de base para todas las webs, ahi metes las cosas que no van a cambiar a través de las páginas, como puede ser una función que tu hagas para ver si la sesión es válida

en cuanto a la función para ver cuales sesiones están activas. Php te administra las sesiones, pero no te dice que usuario de tu base de datos está logeado...
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 22:15.