Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Cromatico en 7 Febrero 2011, 22:16 pm



Título: Sistema de usuarios 1 login
Publicado por: Cromatico en 7 Febrero 2011, 22:16 pm
Hola que talll, es la primera ves que posteo en esta sección y queria saber algo...
Yo tengo un sistema de usuarios simple en php & mysql...
Lo que queria saber es si es posible hacer que cada usuario pueda iniciar sesion una sola ves.
No se si me explico, por ejemplo:
Usuario: cromatico
pass:     cromatico

logueo en php y mantengo la sesion...


Entonces, abro la pagina de nuevo, con otro navegador, lo que sea y quiero iniciar sesion con el mismo usuario...
Entonces estaria bueno que evite eso, con algun mensaje estilo "su usuario esta siendo utilizado por otra persona"

Alguna pista de como se puede lograr eso?


Título: Re: Sistema de usuarios 1 login
Publicado por: Castg! en 7 Febrero 2011, 23:30 pm
Agregá una columna a la base de datos, puede ser "loged", entonces, al momento en el que usuario inicia la sesión, vos cambias ese valor por "true" o "1", y cuando cierra la sesión lo volves a "false" o "0".
Entonces, cuando intente iniciar sesión en otra ubicación (por ende, si intenta iniciar la sesión, no tiene cookie) y ya está logeado en otro lugar, comprobas el valor de "loged", si es true, retornas error, si es false, lo logeas comúnmente.

Saludos..


Título: Re: Sistema de usuarios 1 login
Publicado por: Cromatico en 8 Febrero 2011, 00:07 am
Si eso lo pense tambien, pero y si no cierra la sesion? Si apaga la pc directamente?

Gracias por responder!


Título: Re: Sistema de usuarios 1 login
Publicado por: Shell Root en 8 Febrero 2011, 00:58 am
Supongo que la cookie tiene un tiempo de vida, no?


Título: Re: Sistema de usuarios 1 login
Publicado por: Castg! en 8 Febrero 2011, 01:07 am
Al igual tiempo de expiracion seteado en la cookie, tiempo de expiracion de sesion en la base de datos. Osea, otra columna más que sea expire con la fecha y hora en que expira la sesión. Entonces, si loged es true pero ya expiró, tomá a loged como false y listo.


Título: Re: Sistema de usuarios 1 login
Publicado por: Cromatico en 8 Febrero 2011, 01:13 am
Mmm pero siendo asi tendria que hacer aver si entiendo...
*Una columna poner 1 en caso de login y 0 en caso de offline o tiempo expirado
*En otra columna la hora exacta que se hizo la sesion en mysql

Y tendria que hacer algo mas, si el tiempo de expirasion de sesion de la db es nose 3 minutos, tendria que refrezcar cada 3 minutos la pagina php para que inicie de nuevo?

Gracias a los dos!


Título: Re: Sistema de usuarios 1 login
Publicado por: bomba1990 en 8 Febrero 2011, 03:08 am
no necesitas dos columnas, con una basta pones la ultima fecha donde se conecto el usuario. Si el usuario vuelve a recargar la pagina o a hacer cualquier accion tranquilamente compruebas cual es la diferencia ocn la hora si es menor a 3 cargas la pagina y actualisas la hora sino es asi muestras el login. No es muy complicado, aunque pienso que 3 min es muy poco. suerte y cualquier dudas posteas.

modificacion:

lo estuve pensando y quizas si requieres otra cosa usar cookies para comprobar que ese es el navegador desde donde se esta conectando o quizas algo que tenga que ver con el id de session.


Título: Re: Sistema de usuarios 1 login
Publicado por: Cromatico en 8 Febrero 2011, 03:24 am
Mmmm disculpen por tantas vueltas voy a ver si puedo explicar todo bien bien...

Lo que hago ahora es, desde visual basic 6, (a travez de php), conecto a la database con un usuario y contraseña, php responde y vb lee esa respuesta.
Lo que quiero hacer es un sistema de login para vb, pense que tranquilamente podria trabajar con php & mysql para esto.

El programa pide usuario y contraseña para abrir por ejemplo, esos datos los cifra y los manda por php a la database mysql, si coinciden con alguno de los usuarios y contraseñas cifrados tambien en la database, entonces se abre...

Ahora la cuestion es que si una pc esta usando el programa con un usuario y pass, quisiera que si otra pc intenta abrir el programa con el mismo usuario y pass no lo deje ya que esta siendo utilizado por otra pc.

Lo que intento evitar es dejar mi pc prendida como servidor, ya que atravez de winsock vb clientes & server seria mucho mas facil, pero bueno quisiera hacerlo de este modo con php & mysql para que no dependa de mi pc.

Entonces, el programa abre el link php que conecta con la database, verifica y si es correcto responde OK y el programa abre.

Las soluciones que me dieron es crear una tabla con logeado true o false por ejemplo en mysql 1 o 0, pero si uno de los que esta usando el programa, apaga la pc directamente, nunca va a mandar el php para que indique 0 en mysql...

Volviendo a lo del tiempo, como se podria hacer que en mysql despues de X minutos se establezca el valor 0 en X usuario?

Quizas la complique mucho o di muchas vueltas pero bueno :P Disculpen

Muchas gracias!!!


Título: Re: Sistema de usuarios 1 login
Publicado por: bomba1990 en 8 Febrero 2011, 03:57 am
bueno ya te entiendo mejor, yo no conozco una funcion en mysql que haga eso pero yo te recomeindo que pongas dos columnas una con la ip de la maquina y otra con la hora donde se conecto la maquina, cuando una pc se conecte hace varias comprobaciones:
  • 1. Primero a que hora se conecto por ultima ves ese usuario
  • 2. if (Hora actual - hora en al base de datos) > x then paso 4 else paso 3
  • 3. if ip.maquina = ip.base de datos then ejecuta el pedido else paso 4
  • 4. logeate

y en tu codigo de vb debes poner que haga un llamado a la pagina asi sea cada 5 min que seria igual a x para decir estoy vivo y asi actualizar la hora.

entiendes? disculpa si no soy muy claro


Título: Re: Sistema de usuarios 1 login
Publicado por: Cromatico en 8 Febrero 2011, 18:12 pm
Entendi perfectamente, ahora me pongo a hacer eso, me parece que es una de las formas mas "faciles" por asi decirlo y esta buena, muchas gracias!
Quizas me surgan algunas dudas luego, gracias por ayudarme!