Ejercicios - Bases de datos (3) - Identificación de usuarios - Enunciados
El objetivo de estos ejercicios es de añadir a una aplicación (la agenda desarrollada en los ejercicios anteriores) un sistema de identificación de usuarios (con nombre y contraseña).
La plantilla para el ejercicio 1 son los ficheros de la solución del ejercicio Bases de Datos 2 (B) 2, sin modificar pero distribuidos en carpetas.
La plantilla para el ejercicio 2 son los ficheros de la solución del ejercicio 1.
La plantilla para el ejercicio 3 son los ficheros de la solución del ejercicio 2, sin apenas modificar pero con una nueva carpeta db que contiene la carpeta tabla-usuarios que es un duplicado de tabla-personas y con las bibliotecas específicas modificadas (funciones borraTodo() modificadas y funciones existenTablas() añadidas).
La plantilla para el ejercicio 4 son los ficheros de la solución del ejercicio 3.
La plantilla para el ejercicio 5 son los ficheros de la solución del ejercicio 4.
Para ayudarle en la realización de estos ejercicios puede consultar una página de comentarios con fragmentos de código.
A partir de la aplicación de agenda desarrollada en los ejercicios anteriores, añada una identificación automática, es decir:
Al usuario se le ofrece la posibilidad de conectarse y desconectarse de la aplicación.
La conexión se realiza automáticamente, sin necesidad de introducir ningún nombre de usuario o contraseña.
Una vez conectado, al usuario se le ofrece en el menú la posibilidad de utilizar la aplicación de agenda.
El usuario no conectado no puede acceder a la aplicación de agenda. Si lo intenta escribiendo la url de una de las páginas de la aplicación, le redirige directamente al inicio.
Bases de datos (3) 2 - Usuario único
Amplíe el ejercicio anterior, de manera que para utilizar la aplicación haya que indicar el nombre y la contraseña de un usuario autorizado:
La aplicación sólo tiene un posible usuario, cuyo nombre y contraseña se encuentran en el fichero de configuración de la aplicación, config.php.
En la aplicación de ejemplo siguiente, el usuario es root y su contraseña es root.
Bases de datos (3) 3 - Tabla de usuarios
Amplíe el ejercicio anterior, de manera que la aplicación esté disponible para varios usuarios:
La aplicación dispone de una tabla de usuarios y cualquiera de ellos puede identificarse.
Nota: En las aplicaciones anteriores, cualquiera podía crear la base de datos, pero en esta aplicación el usuario necesita conectarse para entrar en la aplicación y los datos de ese usuario deben estar registrado en la base de datos. Para resolver esta situación, la aplicación deberá detectar si existe la base de datos y crearla automáticamente. Además, en la tabla de usuarios deberá guardar al menos un registro de usuario inicial que se pueda conectar a la aplicación.
En la aplicación de ejemplo siguiente, el usuario inicial es root y su contraseña es root. Además, en la aplicación de ejemplo este usuario no se puede modificar, aunque una opción de configuración permite elegir si se puede modificar o no.
Bases de datos (3) 4 - Categorías de usuarios
Amplíe el ejercicio anterior, de manera que haya dos categorías de usuarios:
Los usuarios administradores, que pueden realizar todas las acciones disponibles en la aplicación.
Los usuarios básicos, que sólo tiene acceso a la agenda.
En la aplicación de ejemplo siguiente, el usuario inicial es root y su contraseña es root. Además, en la aplicación de ejemplo este usuario no se puede modificar, aunque una opción de configuración permite elegir si se puede modificar o no).
Bases de datos (3) - 5 - Mejoras en la aplicación
Implemente estas mejoras en el ejercicio anterior:
Al borrar todo, ofrecer la opción de insertar automáticamente algunos registros de prueba.
En SQLite, si no existe el directorio donde se quiere guardar la base de datos, mostrar un mensaje indicando el problema.
Ayuda (haga clic aquí si no se le ocurre cómo hacerlo)
Para resolver este apartado puede utilizar las funciones dirname() e is_dir()
Al modificar el registro de un usuario, ofrecer la posibilidad de mantener la contraseña (por ejemplo, marcando una casilla).
Hacer que no se aplique el límite del número de registros en las tablas si el valor de $cfg["tablaPersonasMaxReg"] o $cfg["tablaUsuariosMaxReg"] es 0 o negativo.