Inicio » Blog » PHP

16 noviembre, 2024

Crear un login con Php y Mysql

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íbirse

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.

 

Creación de la base de datos

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).

Conexión a la base de datos (db.php)

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();
}
?>

 

Registro de usuario (register.php)

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>

 

Autenticación de usuario con roles (login.php)

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>

 

Protección de páginas con roles (admin_dashboard.php y user_dashboard.php)

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.

Para el panel del admin (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>

 

Para el panel de usuario (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>

 

Cerrar sesión (logout.php)

Cerramos la sesión con el archivo logout.php:

<?php
session_start();
session_unset();
session_destroy();
header("Location: login.php");
exit;
?>

 

Resumen del flujo de trabajo

  • Registro de usuarios: Los usuarios pueden registrarse con un formulario, donde pueden elegir entre el rol admin o user.
  • Inicio de sesión: Cuando un usuario se loguea, se verifica si las credenciales son correctas y se asigna el rol de usuario a la sesión.
  • Protección de páginas: Se verifica el rol del usuario en las páginas protegidas (como los paneles de administración y usuario).
  • Cierre de sesión: Los usuarios pueden cerrar sesión en cualquier momento, lo que destruye la sesión y los redirige al formulario de login.

 


Leido 24025 veces | 0 usuarios

Descarga del código fuente PHP de Crear un login con Php y Mysql

0 descargas

Para descargar el código crea una cuenta

Crear cuenta

Compartir link del tutorial con tus amigos


MVC PHP y MySql Página Web

USD 10.00

Descarga del código fuente

MVC PHP y MySql Página Web

Más tutoriales de PHP

Codea Applications

México, Colombia, España, Venezuela, Argentina, Bolivia, Perú

© Copyright Codea::App Cursos de Programación Online | LATAM | 2020 - 2024