Sistema de Usuarios (Primera parte): Planificación y estructuras
Un elemento siempre importante en una web es el sistema de autentificación, es decir un sistema de control de usuarios, con login, registro de usuarios y todo esto. A diferencia de otros frameworks en PHP, CodeIgniter no tiene uno por defecto así que lo mejor es crear uno suficientemente “genérico” para que nos sirva en todas nuestra aplicaciones.
Nota: si es vuestra primera toma de contacto con CodeIgniter os recomiendo que probéis primero con el Gestor de Noticias, ya que en este tutorial no repetiré aquellas cosas que ya expliqué en ese otro.
En este sistema introduciremos:
- Crear librerías en CodeIgniter
- Usar la Session Class
- Trabajar con el Cookie Helper
- Enviar emails con Email Class
- Y seguramente alguna cosa más que ira surgiendo a medida que avancemos.
Hacer un sistema de control de usuarios es bastante arbitrario, me refiero a que hay muchas maneras de hacerlo, yo aqui narrare una manera que se me ocurre a mi, que seguramente no será la mejor, pero al menos esperemos que funcione ;-)
Ahora bien, para que todo esto funcione necesitaremos unos elementos básicos que serán estos:
- Base de datos
- Controlador de Usuarios
- Clase que gestionará la autentificación
Base de datos
Empezaremos para definir una tabla básica para lo que nosotros queremos, seguramente en una aplicación real habría muchísimos más campos, pero para esto solo necesitaremos lo básico:
CREATE TABLE `usuarios` ( `id` int(11) NOT NULL auto_increment, `nick` varchar(50) NOT NULL, `clave` varchar(50) NOT NULL, `mail` varchar(50) NOT NULL, `nivel` tinyint(1) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=1 ;
Cómo podéis ver es una tabla bastante genérica. Lo único a comentar sería el campo “nivel” que será el rango del usuario (por ejemplo 0->usuario registrado, 2->operador, 3->administrador).
Controlador de Usuarios
Crearemos un controlador para que nos gestione todas las funciones de nuestra aplicación. En un principio se me ocurren:
Registrar: aqui mostraremos el formulario de registro. También validaremos los datos que nos manden del formulario y si esta todo correcto lo añadiremos en nuestra base de datos
Login: mostraremos un formulario de login, con usuario y contraseña. Miraremos si todo es correcto, marcaremos al usuario como autentificado y lo enviaremos a una sección privada.
Logout: cuando un usuario quiera salir de la autentificación que hizo con el login, podrá eleminar todo rastro en esta función.
Recordar: mostraremos un formulario dónde el usuario pondrá su mail y se le enviarán sus datos de acceso.
Clase ‘Centinela’
Bueno se me ha ocurrido llamar a estar clase “Centinela” como nombre en clave, ya que sus funciones serán de verificar que un usuario esta registrado para dejarle acceder a un contenido privado.
Nota: Si no estáis familiarizados con el uso de clases, os recomiendo buscar en google un buen tutorial, yo he encontrado este por ejemplo.
El funcionamiento de nuestra clase será:
- Cargaremos nuestra clase
- Instanciaremos un objeto de la clase Centinela
- El constructor comprobara si el usuario esta autentificado o aun no
A partir de aquí nosotros decidiremos si en caso de que este ‘logueado’ que hacer con él (por ejemplo mandarlo a nuestra sección privada) o en caso de que no lo este, mandarlo al login.
En caso de que un usuario este logueado, nuestra clase guardará algunos de sus datos como su ID y su NICK, para que podamos usarlo en nuestra conveniencia.
Bueno este artículo ha sido un poco light, pero antes de empezar a “picar teclas”, necesitamos planificarnos bien para que nos salga una chapuza. En el siguiente articulo empezaremos ya con nuestra clase ‘Centinela’.

Hola! Me he sumado hace poco a esto de usar frameworks y he empezado con el CodeIgniter encontrandome con este blog. Seguí el tutorial del sistema de noticias y todo ok, así que espero que termines pronto con el de registro de usuarios.
Una cosa te quería comentar, encontré un framework que deriva del CodeIgniter sólo que en vez de ser llevado por una empresa lo mantiene la comunidad y se llama Kohana. A la hora de descargar dicho framework te dan la opción de descargar una clase de autentificación de usuarios llamada FreakAuth y ésta ha sido creada para CodeIgniter.
Supongo que ya la conocerás, pero por si acaso de te dejo el enlace: http://www.4webby.com/freakauth/
He estado mirandola por encima, y tiene buena pinta. De todos modos seguiré también tu tutorial para ver como crear una desde cero paso a paso.
Saludos!
Buenas g0rka. Respecto al Kohana, ya lo conocía, y tiene buena pinta, pero yo de momento si quiero aplicar algún cambio al CodeIgniter prefiero hacerlo yo así me “fuerzo” a aprender cosas nuevas.
Respecto al “freakAuth”, lo use una vez pero tengo esa manía (quizá mala) de que este tipo de sistemas están pensados en una idea genérica que tienen sus creadores, así que a veces no se ajustan a las necesidades, y te pones a ver el código para adaptarlo y casi prefieres hacer tu uno de cero que cambiar lo que esta hecho :)
Con este tutorial intentaré crear uno muy muy básico de manera que podáis mejorarlo y adaptarlo a vuestro gusto.
Tengo un problema, e intentado realizar una plantilla con frames (marcos cabeza,menu_izquierdo,cuerpo), el problema esta en como llamar desde mi index a esas paginas, ya que mi index es el contenedor de las etiquetas frames, espero que se entienda. no se si Tubieras algun Ejemplo al REspecto
Gracias