Como insertar roles en php y mysql?

Cerrado
veloso97_8795 Mensajes enviados 1 Fecha de inscripción lunes, 16 de noviembre de 2020 Estatus Miembro Última intervención lunes, 16 de noviembre de 2020 - Modificado el 16 nov 2020 a las 17:40
 Perfil bloqueado - 18 dic 2020 a las 20:01
Hola buenas, tengo una consulta, lo que pasa es que quiero ingresar roles de usuario en mi código pero no se como hacerlo, tengo el formulario de registro y login ya creados, solo me falta agregar la referencia que ya mencioné anteriormente:

registro_usuario_be.php:

<?php

include 'conexion_be.php';

$nombre_completo = $_POST['nombre_completo'];
$correo = $_POST['correo'];
$usuario = $_POST['usuario'];
$contrasena = $_POST['contrasena'];
$contrasena = hash('sha512', $contrasena);

$query = "INSERT INTO usuarios(nombre_completo, correo, usuario, contrasena)
VALUES('$nombre_completo', '$correo', '$usuario', '$contrasena')";

//Verificar que el correo no se repita en la bd


$verificar_correo = mysqli_query($conexion, "SELECT * FROM usuarios WHERE correo='$correo' ");
if (mysqli_num_rows($verificar_correo) > 0) {
echo '
<script>
alert("Este correo ya está registrado");
window.location = "../index.php";
</script>
';
exit();
}

//Verificar que el nombre de usuario no se repita en la bd


$verificar_usuario = mysqli_query($conexion, "SELECT * FROM usuarios WHERE usuario='$usuario' ");
if (mysqli_num_rows($verificar_usuario) > 0) {
echo '
<script>
alert("Este usuario ya está registrado");
window.location = "../index.php";
</script>
';
exit();
}

$ejecutar = mysqli_query($conexion, $query);
if ($ejecutar) {
echo '<script>
alert("Usuario registrado correctamente");
window.location = "../index.php";
</script>';
}else{
echo '<script>
alert("Inténtalo de nuevo, usuario no registrado");
window.location = "../index.php";
</script>';
}

mysqli_close($conexion);

?>

login_usuario_be.php:

<?php

session_start();

include 'conexion_be.php';

$correo = $_POST['correo'];
$contrasena = $_POST['contrasena'];
$contrasena = hash('sha512', $contrasena);

$validar_login = mysqli_query($conexion, "SELECT * FROM usuarios where correo='$correo' and contrasena='$contrasena'");

if (mysqli_num_rows($validar_login) > 0) {
$_SESSION['usuario'] = $correo;
header("location: ../inicio.php");
exit;
}else{
echo '
<script>
alert("El usuario no existe, por favor verifique los datos introducidos");
window.location = "../index.php";
</script>
';
exit;
}

?>

index.php:

<?php

session_start();

if (isset($_SESSION['usuario'])) {
header("location: inicio.php");
}

?>

<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Iniciar Sesión</title>
<link rel="stylesheet" type="text/css" href="assets/css/estilos.css">
</head>
<body>
<main>
<div class="contenedor__todo">
<div class="caja__trasera">
<div class="caja__trasera-login">
<h3>¿Ya tienes una cuenta?</h3>
<p>Inicia sesión para entrar a la página</p>
<button id="btn__iniciar-sesion">Iniciar sesión</button>
</div>
<div class="caja__trasera-register">
<h3>¿Aún no tienes una cuenta?</h3>
<p>Regístrate para que puedas iniciar sesión</p>
<button id="btn__registrarse">Regístrate</button>
</div>
</div>
<!--Formulario de registro y login-->
<div class="contenedor__login-register">
<!--Login-->
<form action="php/login_usuario_be.php" method="POST" class="formulario__login">
<h2>Iniciar sesión</h2>
<input type="text" placeholder="Correo electrónico" name="correo">
<input type="password" placeholder="Contraseña" name="contrasena">
<button>Entrar</button>
</form>
<!--Registro-->
<form action="php/registro_usuario_be.php" method="POST" class="formulario__register">
<h2>Regístrarse</h2>
<input type="text" placeholder="Nombre Completo" name="nombre_completo">
<input type="text" placeholder="Correo Electrónico" name="correo">



<input type="text" placeholder="Usuario" name="usuario">
<input type="password" placeholder="Contraseña" name="contrasena">
<button>Regístrarse</button>
</form>
</div>
</div>
</main>
<script src="assets/js/script.js"></script>
</body>
</html>

1 respuesta

Perfil bloqueado
18 dic 2020 a las 20:01
Hola!

Existen varios modos de implementar un sistema de roles con PHP.

La primera pregunta que debes responder es: un usuario, ¿puede tener más de un rol en el sistema?

Si la respuesta es no estás en un escenario más bien simple, basta con tener una columna extra en la tabla de usuarios para poder identificar qué rol tiene cada uno.

Al momento de realizar el login puedes guardar en la sesión el rol del usuario y luego, en cada página preguntas si el rol del usuario está dentro del arreglo de roles autorizados para ésta.

Si un usuario puede tener más de un rol tampoco se trata de una catástrofe :), sólo que tendrás algo más de trabajo.

En principio deberás definir una tabla más para almacenar la relación usuario-rol y luego, al iniciar sesión deberás guardar el conjunto completo de los roles del usuario.

Al hacer la verificación deberás comparar que la intersección entre los roles del usuario actual y los autorizados no sea vacía (Es decir, que el usuairo tenga al menos uno de los roles autorizados).

Coméntame si necesitas más ayuda ;)
1