emirpolito/crud-biblioteca-original
Public
wasmer run emirpolito/crud-biblioteca-original
wasmer run emirpolito/crud-biblioteca-original
👨💻 Autor
Emir Polito
- GitHub: https://github.com/EmirPolito
- Linkedin: https://www.linkedin.com/in/emir-polito-g/
SIS-BIBLIO (Sistema de Gestión Bibliotecaria)
SIS-BIBLIO es una plataforma integral desarrollada para la administración eficiente de una biblioteca y un avanzado Módulo de Seguridad Web (Proyecto Final DWP – SDA 3er Parcial). Construido estrictamente con PHP puro, HTML5, CSS3, JavaScript nativo (Vanilla) y MySQL (PDO), este sistema enfatiza las mejores prácticas de Clean Code y Principios SOLID, garantizando una seguridad de grado profesional en cada interacción.
Características Principales
1. Módulo de Autenticación y Seguridad
- Login Seguro: Validación del lado del cliente y servidor. Regeneración de ID de sesión PHP (
session_regenerate_id). - Antifuerza Bruta: El sistema bloquea temporalmente las cuentas tras múltiples intentos fallidos.
- Tokens CSRF: Incorporados en todos los formularios y acciones críticas (modificar/eliminar) para evitar Cross-Site Request Forgery.
- Contraseñas Hasheadas: Uso del algoritmo seguro
PASSWORD_BCRYPT. - Prevención de Inyección SQL y XSS: Uso estricto de sentencias preparadas (PDO) y sanitización de salidas HTML (
htmlspecialchars). - Arquitectura de Roles: Diferenciación estricta entre Administradores (Staff) y Lectores, con ocultación de UI y bloqueos de backend.
2. Panel de Control (Dashboard)
- Dashboard Estadístico: Visualización en tiempo real de métricas e indicadores diferenciados por rol.
- Estilos Modulares: Cada página cuenta con su propio archivo
.cssencapsulado bajo la carpeta/assets/dashboard/garantizando un aislamiento de diseño perfecto y escalable. - Catálogo de Libros: CRUD completo para gestionar el acervo bibliográfico.
- Mis Préstamos: Historial y estado de los libros prestados por el lector.
- Gestión de Cuentas: Administración jerárquica para creación, edición y eliminación (con confirmación JS nativa) de cuentas de Staff y Lectores.
3. Recuperación de Contraseña Segura
- Generación de un token aleatorio, único y de un solo uso, con vida útil limitada (1 hora).
- Integración al 100% con PHPMailer para el envío del enlace temporal al correo del usuario.
Tecnologías Utilizadas
- Backend: PHP 8+ (Sin Frameworks)
- Base de Datos: MySQL / MariaDB (Driver PDO)
- Frontend: HTML5, CSS3 Nativo, JavaScript Vanilla (Manipulación pura del DOM, sin librerías externas)
- Librerías de Utilidad: PHPMailer, FontAwesome (únicamente íconos)
- Arquitectura: Patrón estructural limpio con separación de responsabilidades funcionales (Configuración, Autenticación, Vistas).
Estructura del Proyecto
SIS-BIBLIO/
├── assets/ # Estilos CSS públicos e imágenes
│ └── dashboard/ # CSS encapsulado uno a uno para cada interfaz privada
├── config/ # Lógica CORE (conexión PDO, gestor de autenticación y CSRF)
├── modules/ # Componentes del Dashboard y Formularios de CRUD
├── PHPMailer/ # Motor para envío transaccional de correos
├── base_de_datos.sql # Script SQL (Incluye usuarios de prueba bcrypted)
├── index.php # Landing Page publicitaria del sistema
├── login.php # Validación de Acceso
├── register.php # Registro de nuevos lectores
├── recover.php # Petición de recuperación (Envío de Email)
└── reset.php # Cambio autorizado de contraseña (Vía Token)
Instalación y Configuración
- Mueve esta carpeta a tu entorno de desarrollo (
htdocsde apache,htdocsde XAMPP owwwde WampServer). - Configuración de la Base de Datos:
- Importa el archivo
base_de_datos.sqla mysql workbench. - Abre el archivo
config/database.phpy asegúrate de modificar las variables de$usery$passwordpara que coincidan con las credenciales de tu servidor MySQL local.
- Importa el archivo
- Configuración de Recuperación de Contraseña (PHPMailer):
- Abre el archivo
recover.phpy localiza la configuración SMTP (Aprox. línea 47). - En
$mail->Username, coloca tu correo electrónico de Gmail. - En
$mail->Password, no pongas tu clave personal. Debes generar una Contraseña de Aplicación de 16 dígitos en la sección de seguridad de tu cuenta Google: https://myaccount.google.com/apppasswords y pegarla ahí.
- Abre el archivo
- Visita en tu navegador:
http://localhost/SIS-BIBLIO/
Casos de Prueba Incluidos
La base de datos se entrega pre-poblada con 2 cuentas maestras para pruebas de acceso:
- Administrador:
admin@ejemplo.com| Pass:1234567 - Lector Estándar:
lector@ejemplo.com| Pass:1234567
Desarrollado bajo los lineamientos de proyectos limpios, cumpliendo estrictamente con la rúbrica de Seguridad de Aplicaciones Web de DWP - SDA 3er Parcial.