PHP: implementare una autenticazione HTTP
26/04/2012Avete un'area web che non deve essere accessibile da tutti e non deve essere indicizzabile da Google o da altri motori di ricerca e non avete particolari esigenze di dfferenziare l'accesso, oppure non avete la possibilità di utilizzare database?
Con PHP possiamo impostare un'autenticazione via http molto semplice.
Lo script va posizionato in testa al documento (se le pagine sono diverse è utile creare un file esterno da includere) e personalizzato in tre elementi: lo user name (variabile $user), la password (variabile $pass), il reindirizzamento qualora l'accesso non sia autenticato (nell'esempio impostato su www.dominio.tld).
Ecco lo script:
function error($error_message) {
echo $error_message."<br />";
exit;
}
#Specifichiamo username e password
$user = "nome-utente";
$pass = "password";
#Se la variabile PHP_AUTH_USER non è settata...
#Chiediamo al browser dell'utente di aprire la finestra di login
if (!isset($_SERVER['PHP_AUTH_USER']))
{
header("WWW-Authenticate: Basic realm=\"Effettua il Login!\"");
header("HTTP/1.0 401 Unauthorized");
exit;
}
#Verifichiamo se il Login è corretto...
else if (($_SERVER['PHP_AUTH_USER'] == $user) && ($_SERVER['PHP_AUTH_PW'] == $pass))
{
echo "ok";
}
#Se il Login non è corretto...
else
{
echo "<h1>Acesso non autorizzato!</h1>";
error("<meta http-equiv='refresh' content='2; URL = https://www.dominio.tld'>");
}