Autenticar y dar acceso a diferentes tipos de usuario | Curso PHP y MySQL #57
Summary
TLDREn este tutorial de PHP y MySQL, se muestra cómo implementar un sistema de acceso basado en roles para diferentes usuarios de un blog. Se explica cómo asignar permisos a administradores, colaboradores y usuarios finales, y cómo restringir el acceso a páginas específicas según el rol del usuario. El proceso incluye la autenticación de usuarios, la utilización de sesiones y la creación de restricciones de acceso en función del rol asignado, proporcionando una guía práctica para desarrollar aplicaciones con control de acceso.
Takeaways
- 😀 Este tutorial enseña cómo implementar roles de acceso en un blog utilizando PHP y MySQL.
- 🔒 Los usuarios tienen diferentes niveles de acceso, como administradores, colaboradores y usuarios finales.
- 📝 El script muestra cómo restringir el acceso a ciertas páginas web según el rol del usuario.
- 📊 Se utiliza una base de datos con dos tablas principales: 'roles' y 'usuarios', relacionadas mediante una clave foránea.
- 👤 Los usuarios tienen un campo 'rol' que determina sus permisos dentro del sistema.
- 🔑 La autenticación de usuarios se maneja mediante un formulario de inicio de sesión y sesión PHP.
- 🚀 Se incluye un ejemplo de cómo redirigir a los usuarios según su rol después de iniciar sesión.
- 🛡️ El script también cubre cómo proteger páginas específicas para que solo los roles adecuados puedan acceder.
- 🔍 Se destaca la importancia de utilizar IDs para los roles en lugar de texto para facilitar la gestión y actualización.
- 🛠️ Se sugiere la posibilidad de utilizar constantes para los roles en el código para una mejor mantenibilidad.
- 📚 El tutorial ofrece una guía para crear sistemas o aplicaciones basadas en roles, con recomendaciones de diseño y estructura de base de datos.
Q & A
¿Qué tutorial están viendo los estudiantes en el script proporcionado?
-Los estudiantes están viendo un tutorial de PHP y MySQL que enseña cómo permitir el acceso a ciertos roles basándose en los permisos de los usuarios.
¿Cuál es el propósito principal del tutorial mencionado en el script?
-El propósito principal es enseñar a los estudiantes cómo implementar una funcionalidad de control de acceso basada en roles para diferentes usuarios de un blog.
¿Qué ejemplo se utiliza para ilustrar la implementación de roles en el tutorial?
-Se utiliza el ejemplo de un blog donde se pueden asignar diferentes permisos a roles como administrador, colaborador y usuarios finales.
¿Qué rol tiene el usuario 'marcos' en el ejemplo del tutorial?
-El usuario 'marcos' tiene el rol de administrador en el ejemplo del tutorial.
¿Cómo se restringe el acceso a ciertas páginas en el tutorial?
-Se restringe el acceso a ciertas páginas mediante la autenticación de usuarios y la verificación de sus roles para permitir o denegar el acceso a la página.
¿Qué estructura de base de datos se utiliza para manejar los roles y permisos en el tutorial?
-Se utiliza una base de datos llamada 'blog' con al menos dos tablas: 'roles' y 'usuarios', donde 'roles' tiene columnas para 'id' y 'rol', y 'usuarios' tiene columnas para 'id', 'username', 'password' y 'rol', con una clave foránea que hace referencia al 'id' de la tabla 'roles'.
¿Qué es una 'clave foránea' y cómo se utiliza en el contexto del tutorial?
-Una 'clave foránea' es un tipo de restricción de integridad referencial en una base de datos que se utiliza para linkear filas de dos tablas. En el tutorial, la clave foránea se utiliza para asociar cada usuario con un rol específico en la tabla 'roles'.
¿Qué método se utiliza para iniciar sesión en el sistema que se está explicando en el tutorial?
-Se utiliza el método POST para enviar los datos de inicio de sesión (nombre de usuario y contraseña) y se realiza una verificación contra la base de datos para autenticar al usuario.
¿Cómo se asigna el rol de un usuario una vez que se ha autenticado exitosamente?
-Una vez que un usuario se ha autenticado, se extrae el rol de la fila correspondiente en la tabla 'usuarios' y se asigna a una variable de sesión llamada 'rol'.
¿Qué es una 'variable de sesión' y cómo se utiliza en el tutorial para controlar el acceso?
-Una 'variable de sesión' es un tipo de variable que se utiliza para almacenar información durante la duración de una sesión de usuario. En el tutorial, la variable de sesión 'rol' se utiliza para determinar qué acceso tiene el usuario una vez que ha iniciado sesión.
¿Cómo se implementa la redirección de usuario basada en su rol después de iniciar sesión en el tutorial?
-Después de iniciar sesión y asignar el rol a la variable de sesión, se utiliza un 'switch' o 'if-else' para evaluar el rol del usuario y redirigirlo a la página apropiada (como 'admin.php' o 'colaborador.php') según su rol.
¿Qué medidas se toman en el tutorial para evitar que los usuarios no autorizados accedan a ciertas páginas?
-Se implementa una verificación de sesión y rol en las páginas restringidas. Si el usuario no tiene el rol adecuado o no ha iniciado sesión, se le redirige a la página de inicio de sesión.
¿Cómo se puede mejorar la implementación de roles y permisos para facilitar futuras modificaciones en el tutorial?
-Se sugiere utilizar constantes en lugar de cadenas de texto para los roles, lo que facilita su cambio en un solo lugar si es necesario y evita errores en el código. Además, se puede utilizar un archivo de configuración central para estas constantes.
Outlines
😀 Tutorial de roles y permisos en PHP y MySQL
El tutorial comienza con una introducción al manejo de roles y permisos en un blog, utilizando PHP y MySQL. Se plantea la idea de diferentes niveles de acceso, como administradores, colaboradores y usuarios normales, y cómo restringir el acceso a la sección administrativa. El instructor muestra cómo, al no estar implementada la verificación de roles, un formulario continúa mostrando su contenido a pesar de no estar autenticado. Luego, se da un vistazo a la estructura de la base de datos, destacando las tablas de 'roles' y 'usuarios', y cómo se utiliza una columna 'rol' para asignar permisos a los usuarios.
🔐 Implementación de autenticación y roles en el login
Este párrafo se enfoca en la implementación del proceso de inicio de sesión y cómo manejar la autenticación de usuarios según su rol. Se describe el uso de sesiones para identificar si el usuario ha iniciado sesión y su rol correspondiente. Se detalla el uso de 'session_start()', y cómo se establecen variables de sesión para el rol del usuario. Se incluyen condicionales para redirigir al usuario de acuerdo con su rol, mostrando cómo se restringe el acceso a páginas específicas y cómo se maneja el cierre de sesión.
📝 Proceso de conexión a la base de datos y verificación de usuario
El script sigue con la explicación del proceso de conexión a la base de datos y la verificación de las credenciales de inicio de sesión. Se menciona la creación de variables para el nombre de usuario y contraseña, y se describe cómo se realiza una consulta preparada para buscar coincidencias en la tabla 'usuarios'. Se resalta la importancia de manejar correctamente la conexión y la extracción de datos, así como la verificación de la existencia de un rol para el usuario autenticado y la asignación de este rol a la sesión del usuario.
🚦 Restricciones de acceso basadas en roles y configuración de páginas
El último párrafo se centra en la restricción de acceso a diferentes páginas basadas en el rol del usuario. Se describe cómo se implementa la verificación de roles en las páginas 'admin' y 'colaborador', y cómo se redirige al usuario de acuerdo con su rol y la existencia de una sesión válida. Se discuten los problemas que pueden surgir si no se configuran correctamente las restricciones de acceso y se muestra cómo se resuelven estas situaciones. El tutorial concluye con una revisión de los comentarios y sugerencias del instructor sobre cómo mejorar y adaptar la implementación de roles y permisos en diferentes aplicaciones.
Mindmap
Keywords
💡PHP
💡MySQL
💡Roles
💡Permisos
💡Autenticación
💡Sesiones
💡Llaves foráneas
💡Restricciones
💡Validación
💡Redirección
Highlights
Tutorial de PHP y MySQL para implementar acceso basado en roles.
Ejemplo práctico de un blog con diferentes permisos para usuarios.
Importancia de restringir el acceso a páginas específicas para usuarios no autenticados.
Proceso de autenticación y asignación de roles mediante sesiones en PHP.
Estructura de la base de datos para roles y usuarios con ejemplos de columnas y restricciones.
Uso de llaves foráneas para vincular roles a usuarios y asegurar integridad referencial.
Implementación de un formulario de inicio de sesión y su conexión con la base de datos.
Validación de inicio de sesión y asignación de roles a la sesión de usuario.
Condicionales para redirigir usuarios según su rol y acceso a páginas.
Manejo de sesiones y cierre de sesión en PHP.
Restricciones de acceso a páginas administrativas para usuarios con roles específicos.
Estrategia para evitar el acceso no autorizado a páginas restringidas.
Uso de constantes para simplificar y centralizar la configuración de roles.
Métodos para identificar y redirigir usuarios según su rol asignado.
Prueba de funcionalidad con diferentes roles y permisos de acceso.
Conclusión del tutorial y sugerencias para mejorar y aplicar la implementación en proyectos reales.
Transcripts
bienvenidos a un nuevo tutorial de
nuestro curso de php y mysql en nuestra
ocasión vamos a realizar un pequeño
tutorial para permitir el acceso a
ciertos roles dependiendo de cuál sea el
permiso para los usuarios
[Música]
esta es una de las preguntas o de los
tutoriales que me han pedido a hacer en
donde lo que quieren es ver cómo se
implementaría esta funcionalidad de
imagínense que yo no sé tengo un blog no
entonces en un blog tú puedes asignar
diferentes permisos por ejemplo está el
administrador de todo el blog están los
colaboradores está la gente a lo mejor
que solamente tiene acceso a ver
entradas
y obviamente están los usuarios finales
los usuarios finales pues no debería
tener ningún tipo de acceso a la parte
administrativa del blog pero los otros
roles sí y dependiendo de qué tipo de
roles que algo mejor van a tener una
vista diferente entonces es lo que
avance el día de hoy yo aquí tengo por
ejemplo este pequeño formulario y si le
digo a bueno primero no no tengo nada
implementa entonces voy a por ejemplo a
ir a admin php cuando le doy clic me
sigue mostrando mi formulario por qué
porque nuestros logueado tengo otra
página que se llama cola de
colaboradores
y de igual forma me sigue mandando al
login esto es porque pues porque estoy
restringiendo el acceso de esas páginas
para que no puedan ingresar los usuarios
sin que estén autenticados ahora qué
pasa si no auténtico por ejemplo con mi
mi cuenta marcos y password marcos
entonces
yo soy administrador entonces si le doy
iniciar sesión me manda la página que
dice administrador ahora yo como
administrador configure que no pueda
haber cola punto php entonces me va a
seguir mandando siempre
mi panel de administrador si me voy a ir
al login
también me manda administrador porque no
tiene sentido que vaya al login sólo
hasta que me des lo que por ejemplo yo
le puse aquí login php
y cerrar
sesión es igual a 1 ya con ésta cerré
sesión y bueno ya regresé a mi
formulario inicial entonces eso es lo
que vamos a hacer y vamos a
implementarlo vamos a empezar con
nuestro tutorial lo que aquí ya tengo
van a ser varios sitios o varias páginas
de hecho index digamos sería el acceso
general de los usuarios para ver las
entradas de tu blog
en este caso digo para hacer un modelo
muy sencillo y el tutorial no dure tanto
vamos a omitir esta parte porque es la
parte en la que simplemente mandamos a
llamar a las entradas de nuestro blog
entonces empezando primero vamos a ver
nuestra base de datos es una base de
datos que el puse blog tiene 22 tablas
vamos a revisar cada una la primera
tabla es de roles ahora
mucho también me me dicen que por qué no
muestro como creó las tablas dio
realmente ya estamos grandecitos en esta
parte del tutorial entonces les voy a
explicar la estructura
tengo dos campos dos columnas una que se
llama haití es un entero dos un rol que
es un marcha el aire es audio
incrementarle y obviamente le puse que
es un prime maric y porque éste tiene
que ser único ok y el roll tus jazz no
tiene nada más eso es todo vamos a ir a
usuarios
aquí tengo más columnas voy a ir a la
estructura
entonces tengo el lady normal esto no
debería ser ningún problema para
para estructurarlo username y un
password ok algo interesante aquí es
esta columna que le puse el rol de ok
este roland y ven que tiene una
llavecita gris es porque es un force en
que int
2 entonces este rol aid y me va a servir
para asignarle a cada usuario un permiso
entonces se mueve aquí en religión view
voy a ver que hay una sección para crear
restricciones o lo que haríamos forem
que entonces yo aquí por ejemplo puedes
poner constraints le dice s cómo quieres
que me to to restricción a tu for key
aquí le pones que como es cuando se
actualiza se elimina en cascada si no
pasa nada cuando se elimine o cuando se
actualice etcétera yo lo dejé igual así
como está le ponemos por ejemplo a la
columna que queremos que sea for en que
de nuestra tabla en este caso sea rol a
eddie y después escogemos la información
de dónde se va a obtener entonces por
ejemplo es blog mi base de datos
mi tabla se llama roles y mi columna se
llama haití entonces es por eso que crea
un foro y como se ve cuando yo le doy
insert ya lo vimos anteriormente en la
lección de forem keys o llaves foráneas
que yo poder rellenar mis datos y aquí
ya me salen los perfiles o los roles que
yo puedo asignar entonces es de esa
forma como integre esta tabla de
usuarios ok y estoy poniendo la ddi
porque a través de la ddi se me hace
mucho más fácil identificar el rol por
qué digo esto porque si el rato yo
quiero cambiar
por ruth o super administrador tendría
que cambiar todo el código pero el idish
siempre es el mismo
si a la mera hora colaboradores no sé
modo lectura oeste no sé escritor no me
importa porque el aire número dos sé que
está asociado a este tipo de error
entonces por eso yo prefiero trabajar
con los idish que con el texto pero de
todas formas lo específico aquí pues
para saber entonces vamos a ir ahora sí
a nuestro código yo aquí tengo tengo 35
archivos como le decía el ex no tiene
nada entonces lo vamos a dejar así login
tiene un formulario tiene ni hacer
ningún password tiene dos input con el
name is earl nine y password método post
y apunta a él mismo porque aquí vamos a
incluir la validación después vamos a ir
a través de ata veces la clase que hemos
utilizado en todo el curso en el que
hacemos referirse en nuestra base de
datos
collapse nada más es un archivo html con
un h 11 header que dice colaborador y
admin es lo mismo pero con administrador
entonces el único que necesitamos para
empezar
vamos a empezar con la parte más difícil
que es login entonces lo primero es que
vamos a utilizar sesiones entonces voy a
ponerle sesión
start
ok y lo primero es identificar vamos a
hacer varios varios condicionales lo
primero es saber por ejemplo si tengo
que cerrar sesión ven que le ponía en la
barra de dirección a cerrar sesión es
igual 1 no ponerle get
al front
voy a ponerle cerrar sesión
si existe esto
aquí
sí sí existe encerrarse cierto entonces
voy a ponerles sesión en el set
y sesión de strike
ok y listo el único que necesitamos para
cerrar sesión
ahorita no después lo que tenemos que
hacer es revisar si hay sesión de error
nos lleva a poner xii set
y ahora voy a especificar station
mi sesión se va a llamar roll entonces
si existe el roll
voy a ponerle un switch
ok con mí
variable decisión
ahora aquí voy a poner los casos que is
one esto es un sí es un admin y que esto
sí es un colaborador que es lo que voy a
hacer aquí bueno si llega una sesión no
necesito volver a presentar mi vista d
de login entonces basta con ponerle un
header
ponerle location
admin php
y en el otro header colaba
si tuviéramos más roles para que lo
tendríamos que ir 364 etcétera entonces
es la forma más fácil que hay pues para
de redirigir al usuario en caso de que
esté ingresando a páginas que no
necesariamente tienen acceso entonces en
este caso ya estamos configurando esta
parte y listo ese es nuestro segundo
condicional
vamos con el tercero que es ahora sin
autenticar a un usuario entonces lleva a
poner if i set
y set
porque voy a validar que exista tanto un
nombre de usuario como un password se
suele ponerle post
si existe el ies hernán
esto
y 777 password
si existen los dos entonces voy a crear
primero mis variables para no usar todo
el post username
password
y listo
ahora necesito hacer mi conexión aquí y
tengo incluido en un clic en club bounce
database punto php entonces necesito
crear un objeto de v es igual a new data
veis
query esto va a ser igual la database
y recuerde desconecte
y tengo que preparar mi sentencia
entonces le va a poner selecta from
usuarios
pues username sea igual a dos puntos y
username
password sea igual a dos puntos password
listo ahora tengo que decirle
query
execute y le voy a incluir en un arreglo
mis valores entonces por hoy user name
esto es igual a mi variable username
coma
password
es igual a
mi variable password
y listo entonces ya tengo mi conexión
pero esto solamente me va a tener los
datos entonces voy a ponerle un robo
y esto va a ser igual a query es igual
la fecha voy a poner para qué fecha
manda
así
fecha no esto es para que me lo
transforme a un arreglo que puedo
utilizar
y voy a ponerle
si rock es igual a otro es decir que
existe contenido en este arreglo
entonces aquí tengo que validar el rol
no si no existe
y luego poner aquí que no existe
es decir no pudo encontrar el match del
usuario con el password ya que puedo
ponerle el usuario o contraseña son
incorrectos
lista entonces esto ya lo podemos probar
así como está si no regreso a crear una
nueva pestaña
y en vez de terminados para ponerle
tutorial
el login
aquí está si yo lo pongo lo que sea
iniciar sesión me dice el usuario
contraseña son incorrectos ok qué pasa
si le pongo el correcto marcos marcos
ya no me sale nada ok eso quiere decir
que si lo auténtico y por último pues
tenemos que extraer el rol entonces yo
puedo ponerle el rol este es igual a row
así y recuerden que es mi tercer el 0 la
columna 0 slide y nombre de usuario
entonces sería el 3 tercer campo o
tercera columna de mis resultados
y ya con esto tengo el roll ahora
necesito asignarlo a mi sesión entonces
voy a ponerle station
y luego poner roll es igual a roll
ok ya con esto le estoy asignando el rol
que tiene y por último voy a hacer un
switch voy a copiar este mismo switch
teóricamente podríamos esto ponerle una
función para que realmente no tengamos
que repetir este código aquí
entonces dependiendo del rol me va a
mandar ya sea a admin oa cola ok y vamos
a verlo entonces voy a ponerle en marcos
marcos voy a iniciar sesión y ya me
manda al administrador pero qué pasa que
todavía si yo por ejemplo me meto a
colar puedo también ver la parte de cola
ahora voy a desbloquear muy voy a
ponerle login punto php
cerrar sesión es igual a 1 o que ya hace
recesión
qué pasa si pongo juan y juan juan es un
colaborador me manda colaborador pero no
debería poder tener acceso a administran
si estaba me falta configurar esta parte
de las páginas vamos a regresar a
nuestras páginas
aquí en admin por ejemplo vamos a
iniciar sesión
sesión start
voy a ponerle un id
voy a ponerle si no existe
station
si no existe una sesión que se llame
role 1 para empezar no necesitaríamos
tener acceso entonces luego con un
header location lo voy a mandar a
login.cl ok
si existe la sesión tengo que validar
que sea del rol adecuado entonces en mi
caso con no estoy de admin existe
validar que sesión
igual a 1
entonces voy a ponerle que es diferente
de uno para poder
a través de él para poder igual
redirigir al usuario a login si es que
quiere entrar como administrador va a
tener que ser a través de login
entonces como estoy y validando tanto
que exista la sesión como que en la
sesión haga referencia al rol correcto y
como les decía basta con ponerle un 1
esto podríamos simplificarlo más en vez
de ponerle un string el cual podríamos
llegar a tener problemas si lo
escribimos mal o si posteriormente lo
cambiamos de nombre entonces con esto
entonces voy a darle actualizar
recuerden que tenía la sesión de juan
entonces ya me manda aquí al login
a ver vamos a ver cola
jazmín
no debería haber muy mandado ahorita
vamos a ver eso
vamos a ver con sabes
se supone que ya aquí en login
tiene que identificar este
a ver vamos a lograr más de uno
administrador y si me voy a colar
bueno aquí todavía me deja admin el blog
y ya me está redirigiendo si soy
administrador me redirige administrador
ya no me deja ponerle login
si está funcionando me falta poner este
mismo código de admin
triste
en colaba
a ver desde acá
ok en cola
pero en vez de que sea uno voy a ponerle
2
entonces si me voy a colar
me siguen mandando administrador si le
pongo login me siguen mandando a
administrador si le pongo index ahí no
hay ninguna validación me manda
correctamente vamos a ponerle login voy
a cerrar sesión
aquí está y ahora voy a probar con por
ejemplo sin estar logueado voy a ponerle
admin php me sigue mandando aquí voy a
ponerle cola punto php me manda a login
y si por ejemplo me lo veo con juan que
es un colaborador iniciarse siendo la
colaborador si me voy a admitir no me
deja ir si me voy a
login
me sigue mandando al colaborador
entonces ya está correcto la
configuración de los roles con las
páginas entonces esta es una pequeña
muestra de cómo podemos configurarlo
realmente curiosidad es bastante fácil
recuerden utilizarlos hay dicen en todo
caso de que pues estén queriendo
utilizar más de un rol o en todo caso
utilice una constante entonces hablan
referencia esa constante para que
también en caso de que quieran cambiar
este valor lo hagan directamente desde
un archivo central como en configuración
y se reflejen en todas las páginas a las
que hagan referencia entonces espero les
haya gustado este tutorial no dude
dejarme en sus comentarios si con esto
le sirvió para poder crear algún sistema
o aplicación basado en roles también me
gustaría que me lo comentara si les
gustó este vídeo grande un like
suscríbase al canal para recibir más
notificaciones de cuando se publique en
los siguientes tutoriales y bueno si no
hay nada más nos vemos la próxima
Посмотреть больше похожих видео
5.0 / 5 (0 votes)