Ver Mensaje Individual
  #2 (permalink)  
Antiguo 18/06/2009, 01:42
Darkzs
 
Fecha de Ingreso: junio-2009
Mensajes: 5
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Opciones de Inicio de sesión y registrarse

Te comento como solucione yo el tema del logueo de usuarios en un sistema interno mio.

Yo lo hice con perl y mysql de la siguiente manera.

Cree 2 tablas en la base de datos.
La primera es la tabla "usuarios" donde guardo todos los datos del usuario, su nombre, apellido, email y clave entre otras cosas.

La segunda es una tabla que lo llame "logged" y es una tabla de tipo memory donde guardo las seciones iniciadas.
la estructura es la siguiente:

ID userid hash expires

Donde.
ID es un indice autonumerico.

userid es el id del usuario en la tabla usuarios y es unico, osea que un mismo usuario no puede estar logueado mas de una vez. porque la consulta da error.

hash es un numero aleatorio ej "f9140280c4e608ba385d9c9ec12ad704"

expires es la fecha en la que expira el logueo del usuario, yo la guardo en formato unix para hacer el chequeo mas simple.

el funcionamiento es el siguiente.

El usuario entra a la pagina y ingresa su usuario y clave, esta se compara con la tabla "usuarios" y se revisa si concuerdan.
si los datos ingresados son correctos, se inserta en la tabla "logged"
el id del usuario su hash y la fecha en la que expira, luego redirecciono al usuario y le creo una cookie que contiene el valor del hash.

En cada parte de la pagina que el usuario necesita estar logueado, leo la cookie, la busco en la tabla logged. si la encuentro y la fecha de expiracion es meyor a la fecha actual lo dejo pasar, en caso de que no exista el usuario tiene o una cookie fabricada o una cookie vieja que ya expiro.
si la fecha de expiracion es menor a la fecha actual, borro el campo de la base de datos y le borro la cookie.

Espero esto te sirva para tener una idea de como hacer el sistema de logueo, si bien este ejemplo es algo basico, se puede extender bastante haciendo pocos cambios.

si queres te puedo postear aca el codigo de las funciones que estoy usando y la estructura de la base para que lo puedas ver mejor.


Saludos.