Uno de los módulos más importantes en cualquier aplicación web es el sistema de autenticación de usuarios.
Los sistemas de login permiten controlar el acceso a paneles administrativos, plataformas empresariales, sistemas académicos, tiendas virtuales y muchas otras aplicaciones.
En este tutorial aprenderás cómo crear un sistema básico de login utilizando PHP y MySQL.
✅ Paso 1: Crear la base de datos
Primero debes crear una base de datos en MySQL.
CREATE DATABASE sistema_login CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
✅ Paso 2: Crear la tabla de usuarios
Ahora crea una tabla para almacenar los usuarios.
CREATE TABLE usuarios (
id INT AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(100) NOT NULL,
email VARCHAR(150) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
fecha_registro DATETIME DEFAULT CURRENT_TIMESTAMP
);
✅ Paso 3: Crear la conexión a MySQL
Crea un archivo llamado conexion.php.
<?php
$host = "localhost";
$dbname = "sistema_login";
$user = "root";
$password = "";
try {
$pdo = new PDO(
"mysql:host=$host;dbname=$dbname;charset=utf8mb4",
$user,
$password
);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
die("Error de conexión");
}
?>
✅ Paso 4: Crear formulario de registro
Crea un archivo llamado registro.php.
<form method="POST">
<input type="text" name="nombre" placeholder="Nombre" required>
<input type="email" name="email" placeholder="Correo" required>
<input type="password" name="password" placeholder="Contraseña" required>
<button type="submit">Registrarse</button>
</form>
✅ Paso 5: Guardar usuarios en la base de datos
Ahora procesaremos el formulario para registrar usuarios.
<?php
require_once "conexion.php";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$nombre = $_POST["nombre"];
$email = $_POST["email"];
$password = password_hash($_POST["password"], PASSWORD_DEFAULT);
$sql = "INSERT INTO usuarios(nombre, email, password)
VALUES(:nombre, :email, :password)";
$stmt = $pdo->prepare($sql);
$stmt->execute([
":nombre" => $nombre,
":email" => $email,
":password" => $password
]);
echo "Usuario registrado correctamente.";
}
?>
La función password_hash() protege la contraseña antes de guardarla.
✅ Paso 6: Crear formulario de login
Crea un archivo llamado login.php.
<form method="POST">
<input type="email" name="email" placeholder="Correo" required>
<input type="password" name="password" placeholder="Contraseña" required>
<button type="submit">Ingresar</button>
</form>
✅ Paso 7: Validar acceso del usuario
Ahora agregaremos la validación del login.
<?php
session_start();
require_once "conexion.php";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$email = $_POST["email"];
$password = $_POST["password"];
$sql = "SELECT * FROM usuarios WHERE email = :email";
$stmt = $pdo->prepare($sql);
$stmt->execute([
":email" => $email
]);
$usuario = $stmt->fetch(PDO::FETCH_ASSOC);
if ($usuario && password_verify($password, $usuario["password"])) {
$_SESSION["usuario_id"] = $usuario["id"];
$_SESSION["usuario_nombre"] = $usuario["nombre"];
echo "Bienvenido " . $usuario["nombre"];
} else {
echo "Correo o contraseña incorrectos.";
}
}
?>
✅ Paso 8: Proteger páginas privadas
Para evitar accesos no autorizados, puedes proteger las páginas verificando la sesión.
<?php
session_start();
if (!isset($_SESSION["usuario_id"])) {
header("Location: login.php");
exit;
}
?>
✅ Paso 9: Cerrar sesión
Crea un archivo llamado logout.php.
<?php
session_start();
session_destroy();
header("Location: login.php");
exit;
?>
💡 Recomendaciones importantes
- Usa siempre password_hash() y password_verify().
- No guardes contraseñas en texto plano.
- Utiliza consultas preparadas.
- Protege las rutas privadas.
- Valida la información enviada por formularios.
- Implementa HTTPS en producción.
🎯 Conclusión
Crear un sistema de login en PHP y MySQL es uno de los primeros pasos para construir aplicaciones web completas y seguras.
Aunque este ejemplo es básico, puede servir como base para desarrollar:
- paneles administrativos
- sistemas empresariales
- plataformas educativas
- tiendas virtuales
- APIs autenticadas
La clave está en mantener buenas prácticas de seguridad y organización desde el inicio del proyecto.