<!doctype html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>Ejercicio 1</title>
<style>
*{
margin: 0 auto;
padding: 0 auto;
}
body{
width: 1920px;
height: 1080px;
font-family: Arial, sans-serif;
background: #f4f6f9;
align-items: center;
text-align: center;
}
nav{
background-color: #456D96;
color: white;
}
.ejercicio{
margin-top: 10px;
margin-bottom: 10px;
width: 750px;
border: 1px solid black;
border-radius: 10px;
text-align: left;
padding: 15px;
}
footer{
margin: auto;
background-color: #456d96;
text-align: center;
align-content: center;
height: 50px;
;
color: white;
& a{
text-decoration: none;
}
}
</style>
</head>
<body>
<nav>
<h2>DWES - Tema 5</h2>
<h2>Ejercicio 1</h2>
</nav>
<main>
<div class="ejercicio">
<?php
/**
* @author Álvaro Allén
* @since 18-11-2025
* Control de acceso con identificación del usuario basado en la función header().
*/
// Creamos un array con los nombres de usuario como clave y valor un array de dos elementos:
// 1. El resumen de la contraseña encriptada con sha256.
// 2. El nombre del usuario que será mostrado en caso de acceder a la página.
$aUsuarios = [
"admin" => [hash('sha256', 'paso'), "Alvaro Allen Perlines"],
"heraclio" => [hash('sha256', 'paso'), "Heraclio Borbujo"]
];
// Creamos dos variables que guardaran el usuario introducido en el campo
// user del header y la contraseña introducida en el campo password del header.
$usuario = $_SERVER['PHP_AUTH_USER'];
$pass = $_SERVER['PHP_AUTH_PW'];
if (!isset($usuario,$pass )) {
// Ventana emergente que nos pide rellenar dos campos: usuario y contraseña.
header('WWW-Authenticate: Basic realm="Contenido restringido"');
// Indica que la autenticación ha fallado y, por tanto, no puede pasar a la página.
header('HTTP/1.0 401 Unauthorized');
echo "Usuario no reconocido!";
// Es obligatorio exit para que te vuelva a pedir usuario y contraseña.
exit;
}
if(!array_key_exists($usuario, $aUsuarios) || $aUsuarios[$usuario][0] !== hash('sha256',$pass)){
// Ventana emergente que nos pide rellenar dos campos: usuario y contraseña.
header('WWW-Authenticate: Basic realm="Contenido restringido"');
// Indica que la autenticación ha fallado y, por tanto, no puede pasar a la página.
header('HTTP/1.0 401 Unauthorized');
echo '<h3>Acceso denegado</h3>';
// Es obligatorio exit para que te vuelva a pedir usuario y contraseña.
exit;
}
?>
<h3>Acceso permitido</h3>
<p>Bienvenido <strong><?php echo $aUsuarios[$usuario][1]?></strong></p>
</div>
</main>
<footer>
<div>
<a href="../indexProyectoTema5.php">
Álvaro Allén Perlines
</a>
<time datetime="2025-11-18">18-11-2025</time>
</div>
</footer>
</body>
</html>