<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Ejercicio 03</title>
</head>
<body>
<?php
/* @author Cristian Mateos Vega
* @since 18/11/2025
*/
require_once '../config/confDBPDO.php';
require_once '../core/231018libreriaValidacion.php';
//Inicialización de variables
$entradaOK = true;
$nombreUsuario=null;
$claveIngresada=null;
$usuario=null;
$consulta=null;
$consulta2=null;
$consulta3=null;
// ====== 1. Conexión con PDO ======
try {
$miDB = new PDO(DSN, USERNAME, PASSWORD);
$consulta = $miDB->prepare("
SELECT * FROM T01_Usuarios WHERE T01_CodUsuario = :nombreUsuario AND T01_Password = SHA2(:password,256)
");
} catch (PDOException $e) {
die("Error de conexión: " . $e->getMessage());
}
// ====== 2. Solicitar credenciales si no llegan ======
if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW'])) {
header('WWW-Authenticate: Basic realm="Zona Segura"');
header('HTTP/1.0 401 Unauthorized');
echo "Debes autenticarte para continuar.";
exit;
}
$nombreUsuario = $_SERVER['PHP_AUTH_USER'];
$claveIngresada = $_SERVER['PHP_AUTH_USER'].$_SERVER['PHP_AUTH_PW'];
// ====== 3. Consultar usuario en la base de datos ======
$consulta->execute([':nombreUsuario' => $nombreUsuario, ':password'=>$claveIngresada]);
$usuario = $consulta->fetchAll(PDO::FETCH_OBJ);
// ====== 4. Validación ======
if (!$usuario) {
// Usuario no encontrado
header('WWW-Authenticate: Basic realm="Zona Segura"');
header('HTTP/1.0 401 Unauthorized');
echo "Usuario no válido.";
exit;
}
// ====== 5. Actualizar contador y fecha de conexión ======
$consulta2 = $miDB->prepare("
UPDATE T01_Usuarios
SET T01_NumConexiones = T01_NumConexiones + 1,
T01_FechaHoraUltimaConexion = NOW()
WHERE T01_CodUsuario = :nombreUsuario AND T01_Password = SHA2(:password,256)
");
$consulta2->execute([':nombreUsuario' => $nombreUsuario, ':password' => $claveIngresada]);
$consulta3 = $miDB->prepare("
SELECT T01_DescUsuario FROM T01_Usuarios WHERE T01_CodUsuario = :nombreUsuario AND T01_Password = SHA2(:password,256)
");
$consulta3->execute([':nombreUsuario' => $nombreUsuario, ':password' => $claveIngresada]);
$nombreCompleto = $consulta3->fetchAll(PDO::FETCH_ASSOC);
echo "<h1>Bienvenid@, " . $nombreCompleto[0]['T01_DescUsuario'] . "</h1>";
echo "<p>Has accedido correctamente a la zona protegida.</p>";
?>
</body>
</html>