Distinción de Usuarios
Na anterior páxina todo o mundo que tiña acceso á parte restrinxida entraba co mesmo nome de usuario e contraseña, isto evidentemente non é unha boa solución, é mellor que cada persoa teña un nome de usuario e contraseña, xa que desta forma podemos inhabilitar a un usuario sen ver comprometida a seguridade do noso sitio.
Nesta páxina veremos a forma de realizar isto, tendo un ficheiro separado cos nomes de usuario e as contraseñas válidas.
O devandito ficheiro podería ter o seguinte formato: nome_de_usuario|contraseña. Por exemplo:
--- passwords.txt --- Joe|1235 Pedro|qwer Noe|Gty45e kermit|rwe4v
Neste exemplo pídese a autorización ao comezo da páxina se non se estableceu con anterioridade e compróbase co ficheiro de contraseñas que chamamos passwords.txt, se o nome de usuario e contraseña coincide con algunha entrada do ficheiro permítellenos ver o resto da páxina.
<?phpif (!isset($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic realm="Acceso restrinxido"');
header('HTTP/1.0 401 Unauthorized');
echo 'Authorizacion requerida.';
exit;}
else {
$fich = file("passwords.txt");
$i = 0;
$validado = false;
while (!$validado && $i < count($fich)) {
$campo = explode("|", $fich[$i]);
if (($_SERVER['PHP_AUTH_USER'] == $campo[0]) && ($_SERVER['PHP_AUTH_PW'] == rtrim($campo[1])))
$validado = true;
$i++;
}
if (!$validado) {
header('WWW-Authenticate: Basic realm="Acceso restrinxido"');
header('HTTP/1.0 401 Unauthorized');
echo 'Authorizacion Requerida.';
exit; }
else {
?>
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8" />
<title>Título do Documento</title>
</head>
<body>
Conseguiu o acceso á zona restrinxida</B> co usuario <?php echo $_SERVER['PHP_AUTH_USER'] ?>.
</body>
</html>
<?php
}
}?>