16 noviembre, 2024
Para programar un login con sesiones en PHP y MySQL con niveles de acceso (por ejemplo, Admin y User), necesitamos seguir algunos pasos adicionales para gestionar los roles y permisos de los usuarios. Aquí te guiaré paso a paso para crear este sistema.
Suscríbete a nuestro canal en Youtube
SuscríbirsePara programar un login con sesiones en PHP y MySQL con niveles de acceso (por ejemplo, Admin y User), necesitamos seguir algunos pasos adicionales para gestionar los roles y permisos de los usuarios. Aquí te guiaré paso a paso para crear este sistema.
Primero, creamos una base de datos con una tabla de usuarios que incluya el campo role
para asignar diferentes niveles de acceso.
CREATE DATABASE my_database;
USE my_database;
CREATE TABLE users (
id INT(11) AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
password VARCHAR(255) NOT NULL,
email VARCHAR(100) NOT NULL,
role ENUM('admin', 'user') DEFAULT 'user' NOT NULL
);
role
: Es un campo de tipo ENUM
que define el nivel de acceso del usuario (admin
o user
).Creamos un archivo db.php
para gestionar la conexión a la base de datos:
<?php
$servername = "localhost";
$username = "root"; // Cambia por tu usuario
$password = ""; // Cambia por tu contraseña
$dbname = "my_database"; // Nombre de la base de datos
try {
$pdo = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
?>
A continuación, un formulario para registrar a los usuarios, donde asignamos un role
por defecto (en este caso, user
):
<?php
include('db.php');
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$username = $_POST['username'];
$password = $_POST['password'];
$email = $_POST['email'];
$role = $_POST['role']; // Si quieres permitir que el admin lo elija
// Hash de la contraseña
$hashed_password = password_hash($password, PASSWORD_DEFAULT);
// Insertar en la base de datos
$sql = "INSERT INTO users (username, password, email, role) VALUES (?, ?, ?, ?)";
$stmt = $pdo->prepare($sql);
$stmt->execute([$username, $hashed_password, $email, $role]);
echo "Usuario registrado con éxito.";
}
?>
<form method="post">
<input type="text" name="username" placeholder="Username" required>
<input type="password" name="password" placeholder="Password" required>
<input type="email" name="email" placeholder="Email" required>
<select name="role">
<option value="user">Usuario</option>
<option value="admin">Administrador</option>
</select>
<button type="submit">Register</button>
</form>
En el archivo login.php
, verificamos si el usuario existe y si la contraseña es correcta. Además, asignamos el rol al inicio de sesión para determinar el nivel de acceso:
<?php
session_start();
include('db.php');
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$username = $_POST['username'];
$password = $_POST['password'];
// Verificar si el usuario existe
$sql = "SELECT * FROM users WHERE username = ?";
$stmt = $pdo->prepare($sql);
$stmt->execute([$username]);
$user = $stmt->fetch(PDO::FETCH_ASSOC);
if ($user && password_verify($password, $user['password'])) {
// Inicio de sesión exitoso
$_SESSION['user_id'] = $user['id'];
$_SESSION['username'] = $user['username'];
$_SESSION['role'] = $user['role']; // Guardamos el rol
// Redirigir a la página correspondiente según el rol
if ($user['role'] == 'admin') {
header("Location: admin_dashboard.php");
} else {
header("Location: user_dashboard.php");
}
exit;
} else {
// Credenciales incorrectas
echo "Usuario o contraseña incorrectos.";
}
}
?>
<form method="post">
<input type="text" name="username" placeholder="Username" required>
<input type="password" name="password" placeholder="Password" required>
<button type="submit">Login</button>
</form>
Dependiendo del rol, el usuario será redirigido a diferentes paneles. Asegúrate de que las páginas estén protegidas por el nivel de acceso.
admin_dashboard.php
):
<?php
session_start();
// Verificar si el usuario está autenticado y es admin
if (!isset($_SESSION['user_id']) || $_SESSION['role'] != 'admin') {
header("Location: login.php");
exit;
}
echo "Bienvenido, Admin " . $_SESSION['username'];
?>
<a href="logout.php">Cerrar sesión</a>
user_dashboard.php
):
<?php
session_start();
// Verificar si el usuario está autenticado y es user
if (!isset($_SESSION['user_id']) || $_SESSION['role'] != 'user') {
header("Location: login.php");
exit;
}
echo "Bienvenido, Usuario " . $_SESSION['username'];
?>
<a href="logout.php">Cerrar sesión</a>
Cerramos la sesión con el archivo logout.php
:
<?php
session_start();
session_unset();
session_destroy();
header("Location: login.php");
exit;
?>
admin
o user
.
Leido 24025 veces | 0 usuarios
0 descargas
Para descargar el código crea una cuenta
Crear cuenta© Copyright Codea::App Cursos de Programación Online | LATAM | 2020 - 2024