Creare un sistema di autenticazione tramite HTTP con PHP

Giovanni Canella

13/09/2013

3828

In PHP come ben sappiamo le possibilità sono infinite, e per risolvere un problema abbiamo di fronte varie strade: prendiamo un esempio: per creare un sistema di login possiamo affidarci al classico sistema, con l'utilizzo di un database in cui salvare gli utenti, eliminarli, modificarli, e il codice che c'è dietro per manovrare il tutto. Oppure come vedremo in questo articolo utilizzeremo una procedura diversa dal solito.

Creare un sistema di autenticazione tramite HTTP con PHP

Infatti ci affideremo ad HTTP. Vediamo come.

Tramite PHP possiamo inviare particolari instestazioni al browser (Specificamente il codice 401), dicendoli che questa pagina fa parte di un'area riservata, e di conseguenza mostrare un popup per immettere username e password.

Ecco il codice:

if (!isset($_SERVER["PHP_AUTH_USER"])) {
	header("WWW-Authenticate: Basic realm=\"Inserisci le tue credenziali di accesso per Ginho!\"");
	header("HTTP/1.0 401 Unauthorized");
	die("Login rifuitato!");
} 

$username = "admin";
$password = "ginho";

if (($_SERVER["PHP_AUTH_USER"] == $username) && ($_SERVER["PHP_AUTH_PW"] == $password)) {
	//Accesso all'area amministrativa con un require 
	echo "BRAVO";
	//header("WWW-Authenticate: Basic realm=\"Inserisci le tue credenziali di accesso per Ginho!\"");
	//header("HTTP/1.0 401 Unauthorized");
} else {
	header("WWW-Authenticate: Basic realm=\"Credenziali non corrette!\"");
	header("HTTP/1.0 401 Unauthorized");
}

In pratica verifichiamo se non siamo loggati, controllando la variabile PHP_AUTH_USER, per poi mostrare in caso positivo un popup simile al seguente, in cui inserire le nostre credenziali di accesso definite successivamente nelle variabili $username, e $password:

 Login popup HTTP

Altrimenti controlliamo se i dati immessi rappresentati dalle variabili PHP_AUTH_USER e PHP_AUTH_PW, corrispondono ai nostri: in caso affermativo effettuiamo il login reindirizzando in un altra pagina, mostrando un messaggio di successo  ecc. In caso contrario mostro nuovamente il form. L'unica cosa importante è di mettere questo controllo finale in tutte le pagine che vorremmo proteggere.

Eventuali suggerimenti per migliorare l'applicazione sono:

  • Inserire un numero massimo di tentativi,
  • Login di più utenti.

Ti potrebbero interessare

I più letti