login.php Formulario de inicio de sesión 1 líneas
1
<?php
// ============================================================
// SIDE - ARC 1.0
// Archivo: login.php
// Propósito: Formulario de inicio de sesión del administrador.
// ============================================================

// Si ya hay sesión activa, redirigir al índice
if (session_status() === PHP_SESSION_NONE) {
    session_start();
}
if (isset($_SESSION['admin_id']) && !empty($_SESSION['admin_id'])) {
    header('Location: /apps/side-arc/index.php');
    exit;
}

$titulo_pagina = 'Iniciar Sesión';
require_once 'header.php';

// Recuperar mensaje de error si fue redirigido desde procesar_login.php
$error = '';
if (isset($_SESSION['login_error'])) {
    $error = $_SESSION['login_error'];
    unset($_SESSION['login_error']);
}
?>

<div class="login-contenedor">

    <div class="login-card">

        <div class="login-card__encabezado">
            <span class="brand-sigla" style="font-size:1.8rem; color:var(--color-acento);
                  letter-spacing:3px; font-family:var(--fuente-principal);">SIDE</span>
            <h1 class="login-card__titulo">Acceso Administrativo</h1>
            <p class="login-card__subtitulo">
                Ingrese sus credenciales para activar el modo administrador.
            </p>
        </div>

        <?php if (!empty($error)): ?>
            <div class="alerta alerta--error">
                <?= htmlspecialchars($error) ?>
            </div>
        <?php endif; ?>

        <?php if (isset($_SESSION['acceso_denegado']) && $_SESSION['acceso_denegado']): ?>
            <div class="alerta alerta--advertencia">
                Debe iniciar sesión para acceder a esa sección.
            </div>
            <?php unset($_SESSION['acceso_denegado']); ?>
        <?php endif; ?>

        <form action="/apps/side-arc/procesar_login.php"
              method="POST"
              class="login-form"
              autocomplete="off">

            <!-- Token CSRF -->
            <?php
            if (empty($_SESSION['csrf_token'])) {
                $_SESSION['csrf_token'] = bin2hex(random_bytes(32));
            }
            ?>
            <input type="hidden" name="csrf_token"
                   value="<?= $_SESSION['csrf_token'] ?>">

            <div class="form-grupo">
                <label for="usuario" class="form-label">Usuario</label>
                <input
                    type="text"
                    id="usuario"
                    name="usuario"
                    class="form-input"
                    maxlength="60"
                    required
                    autofocus
                    autocomplete="username"
                >
            </div>

            <div class="form-grupo">
                <label for="password" class="form-label">Contraseña</label>
                <input
                    type="password"
                    id="password"
                    name="password"
                    class="form-input"
                    maxlength="100"
                    required
                    autocomplete="current-password"
                >
            </div>

            <button type="submit" class="btn btn--primario btn--login-submit">
                Iniciar Sesión
            </button>

        </form>

        <div class="login-card__pie">
            <a href="/apps/side-arc/index.php">← Volver al inicio sin autenticarse</a>
        </div>

    </div><!-- /.login-card -->

</div><!-- /.login-contenedor -->

<?php require_once 'footer.php'; ?>