jairogarcíarincón

Nuestro Blog estará basado en una base de datos MySQL a la que accederemos mediante PDO (puedes encontrar más información en mi clase Bases de Datos en PHP.
Nuestra base de datos debe tener codificación UTF-8 e intercalación utf8_general_ci.
Se recomienda además crear un usuario de base de datos restringido a las operaciones básicas CREATE, UPDATE, SELECT y DELETE, ya que no va a necesitar ninguna mas.
Todo esto lo podríamos hacer mediante algún editor gráfico de MySQL, o directamente accediendo con nuestro usuario root mediante un terminal con el comando:
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
shell> mysql -u root -p | |
Enter password: (enter root password here) |
Cuando nos hayamos conectado, podemos introducir las líneas siguientes para crear la base de datos:
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
CREATE DATABASE cms CHARACTER SET utf8 COLLATE utf8_general_ci; |
Y lo siguiente para crear un usuario con contraseña restringido a la base de datos cms y a las operaciones básicas mencionadas:
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
CREATE USER 'usuario-cms'@'localhost' IDENTIFIED BY 'introduce-la-password'; | |
GRANT INSERT,SELECT,UPDATE,DELETE ON cms.* TO 'usuario-cms'@'localhost'; |
Nota: Para evitar errores de validación de password, ésta debe tener al menos 8 caracteres e incluir un número, una mayúscula y un carácter especial.
Una vez creada la base de datos, necesitamos dos tablas: usuarios y noticias. El motor utilizado (MyISAM o InnoDB) es indiferente para este caso.
Almacenará los datos de los usuarios del CMS, así como los permisos concedidos a cada uno de ellos:
- id: es la clave primaria numérica e identifica de manera único a ese usuario
- usuario: es el nombre del usuario y también es único
- clave: es la clave de acceso, almacenada mediante un hash de cadena password_hash() de un solo sentido. Inicialmente será vacío, pero no permitiremos crear uno nuevo a menos que se rellene dicho campo.
- fecha_acceso: almacena la fecha del último acceso del usuario
- activo: indica si el usuario está activo (1) o inactivo (0)
- usuarios: indica si el usuario tiene acceso (1) o no (0) a la gestión de usuarios
- noticias: indica si el usuario tiene acceso (1) o no (0) a la gestión de noticias
A continuación se detalla la Sintaxis SQL para la creación de la tabla:
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
USE cms; | |
CREATE TABLE `usuarios` ( | |
`id` int(3) NOT NULL AUTO_INCREMENT, | |
`usuario` varchar(16) NOT NULL, | |
`clave` varchar(64) NOT NULL, | |
`fecha_acceso` datetime DEFAULT NULL, | |
`activo` tinyint(1) NOT NULL DEFAULT '0', | |
`usuarios` tinyint(1) NOT NULL DEFAULT '0', | |
`noticias` tinyint(1) NOT NULL DEFAULT '1', | |
PRIMARY KEY (`id`), | |
UNIQUE KEY `usuario` (`usuario`), | |
UNIQUE KEY `id` (`id`) | |
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; |
Almacenará los datos de cada noticia del CMS:
- id: es la clave primaria numérica e identifica de manera única a esa noticia
- titulo: cadena de texto para el título de la noticia
- slug: cadena de texto para el slug o enlace personalizado de la noticia
- entradilla: cadena de texto para la entradilla de la noticia.
- texto: texto de la noticia
- activo: indica si la noticia está activa (1) o inactiva (0)
- home: indica si la noticia se muestra en la home (1) o no (0)
- fecha: indica la fecha de publicación de la noticia
- autor: indica el nombre del autor de la noticia
- imagen: indica el id de la imagen de la noticia
A continuación se detalla la Sintaxis SQL para la creación de la tabla:
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
USE cms; | |
CREATE TABLE `noticias` ( | |
`id` int(3) NOT NULL AUTO_INCREMENT, | |
`titulo` varchar(32) NOT NULL DEFAULT '', | |
`slug` varchar(36) DEFAULT '', | |
`entradilla` varchar(128) DEFAULT '', | |
`texto` longtext, | |
`activo` tinyint(1) NOT NULL DEFAULT '0', | |
`home` tinyint(1) NOT NULL DEFAULT '0', | |
`fecha` datetime DEFAULT NULL, | |
`autor` varchar(64) DEFAULT NULL, | |
`imagen` varchar(64) DEFAULT NULL, | |
PRIMARY KEY (`id`), | |
UNIQUE KEY `id` (`id`) | |
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; |
En la siguiente clase, inicializaremos los diferentes archivos de los diferentes directorios para posteriormente añadir la lógica necesaria de la aplicación.
Publicado el 18 de Junio de 2025
bloggestor de contenidosphpmysqlcss3javascriptjqueryajax