Tutorial PHP

Home | Tutorial PHP | Art. # 6

Autenticazione di rete con PHP ed Apache

Registrazione Domini
Registrazione Domini Internet ai prezzi più bassi d'Europa: soli 5,40 euro più IVA all'anno!

Vediamo in questo tutorial un sistema molto semplice per effettuare un login con PHP, sfruttando il servizio di autenticazione di rete del Web Server su cui viene eseguito, ovvero Apache.

Non occorrà predisporre una pagina HTML con un form che chiederà username e password, dato che il modulo viene restituito direttamente dal Web Server sotto forma di finestra di dialogo.

Creiamo dunque il file login.php ed inseriamo il seguente codice:

<?
    session_start();
    $user = "mia_username"; // SCEGLIERE LA USERNAME
    $pass = "mia_password"; // SCEGLIERE LA PASSWORD
    function finestra_login()
    {
        header("WWW-Authenticate: Basic realm=\"Autenticarsi...\"");
        Header("HTTP/1.0 401 Unauthorized");
        exit;
    }
    $sys_user = $_SERVER["PHP_AUTH_USER"];
    $sys_pass = $_SERVER["PHP_AUTH_PW"];
    if ((!isset($sys_user)) || (!isset($sys_pass)))
    {
        finestra_login();
    }
    else if (($sys_user == $user) && ($sys_pass == $pass))
    {
        $_SESSION["autenticato"] = "SI";
        header("location: /pagina_privata.php");
    }
    else
    {
        finestra_login();
    }
?>

Verrà restituito il seguente output:

Autenticazione di rete con PHP ed Apache

Per prima cosa apriamo la sessione di navigazione; definiamo poi le credenziali di accesso da utilizzare; creiamo una funzione che lanci la finestra di dialogo modoale per l'inserimento di username e password; recuperiamo le variabili di ambiente che, a loro volta, recuperano i valori inseriti nelle caselle di testo della finestra di dialogo (che permette, tra l'altro, di memorizzare l'accesso); verifichiamo che siano stati inseriti i dati e, se inseriti, che siano corretti; se non lo sono richiamiamo la finestra di dialogo modale attraverso la funzione che la genera, altrimenti creiamo una sessione ed indirizziamo l'utente verso la pagina protetta.

La pagina protetta, pagina_privata.php, dovrà controllare per prima cosa che la sessione sia attiva, altrimenti inibirà l'accesso, come nell'esempio di codice che segue:

<?
    session_start();
?>
<html><head>
<title>Pagina privata</title>
</head><body>
<?
    if ($_SESSION["autenticato"] != "SI")
    {
?>
<p>Accesso negato!!!</p>
<?
    }
    else
    {
?>
<p>Contenuto privato...</p>
<?
    }
?>
</body></html>
 

Scritto in data 19/12/2007 e modificato in data 24/12/2007

Segnalalo ad un Amico | Aggiungilo ai Preferiti

© 2008 Appunti PHP - A cura di Luca Ruggiero - Partita IVA 05564851219 - Privacy | Pubblicità | Contatti