Inicio » Blog »

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.

Crear un login con Php y Mysql

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 25507 veces | 17 usuarios

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

Accede al código fuente esencial de nuestra aplicación en formato ZIP ó TXT. Ideal para desarrolladores que desean personalizar o integrar nuestra solución.

Opciones de descarga

  • Usuarios Registrados: Inicia sesión para descarga inmediata.
  • Nuevos Usuarios: Regístrate y descarga.

17 descargas

Para descargar el código inicia sesión o crea una cuenta

Iniciar Sesión

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

Codea Applications

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