Programmatore PHP Esperto | Programmatore MySQL | Sviluppo di Portali Dinamici | Script PHP | Consulente Web | Programmatore Freelance | Sviluppo Sito Internet

Proteggere una Pagina con PHP



Durante questa settimana un Stagista che lavora nell’azienda per il quale collaboro mi ha chiesto se potevo fare un esempio di comeProteggere una Pagina con PHP, è un esempio abbastanza semplice dedicato a qualsiasi Programmatore PHP alle prime armi o semplicemente a sviluppatori di progetti piccoli che non abbiano grosse conoscenze tecniche.

In questa guida, sviluppata come Autenticazione HTTP , illustrerò due metodi di autenticazione, uno con i Cookie e l’altro invece con le Autenticazione HTTP. Ho omesso volontariamente l’autenticazione con le sessioni poichè le ritengo gestibili da un Programmatore PHP con un minimo di esperienza in più.

Autenticazione HTTP

Per utilizzare questo tipo di Autenticazione occorre che sul server ci sia Apache e che il relativo modulo sia attivato, anche se penso che sia un impostazione presente ormai nella maggior parte dei server WAMP. Questo permette al Programmatore PHP di inviare tramite la funzione header le richieste Authentication Required che verranno visualizzate dal browser tramite richieste di inserimento di login e password. Consiglio ad ogni Programmatore PHP o lettore di consultare la documentazione delle variabili PHP_AUTH_USER e PHP_AUTH_PW per meglio comprendere l’esempio riportato di seguito. (Guarda L’esempio username:demo password: demo)


<?php

// Se l’utente non è loggato quindi non è valorizzata
// la variabile $_SERVER[‘PHP_AUTH_USER’] allora richiamo il login

if ($_SERVER[‘PHP_AUTH_USER’] == ””)
 {
 header(‘WWW - Authenticate:
 Basicrealm = ”ProtezionePagina’);
 header(‘HTTP / 1.0401Unauthorized’);
 echo “InserisciilmessaggiooilcodiceHTMLchevuoiescasehocliccatosuAnnulla“;
 exit();

 // Se invece la variabile ha valore allora controlliamo se i valori inseriti sono corretti

 }
   else
 {

 // valori username e password

 $username = “demo”;
 $password = “demo”;

 // Se non ho inserito lo username o risulta errato

 if (($_SERVER[‘PHP_AUTH_USER’] == “”) || ($_SERVER[‘PHP_AUTH_USER’] != $username))
 {
 header(‘HTTP / 1.0401Unauthorized’);
 echo “ACCESSONEGATO–PAGINAPROTETTADAPASSWORD“;
 echo “Errore:
 Usernamenonspecificatoononriconosciuto“;
 echo “ChiudereilBrowsereriprovarel’accesso“;
 }

 // Se non ho inserito la password o risulta errato

 if (($_SERVER[‘PHP_AUTH_PW’] == “”) || ($_SERVER[‘PHP_AUTH_PW’] != $password))
 {
 header(‘HTTP / 1.0401Unauthorized’);
 echo “ACCESSONEGATO–PAGINAPROTETTADAPASSWORD“;
 echo “Passwordnonspecificataononriconosciuta“;
 echo “ChiudereilBrowsereriprovarel’accesso“;
 } ?>

// Inseriamo il codice HTML della pagina protetta
// Se l’utente non è loggato quindi non è valorizzata
// la variabile $_SERVER[‘PHP_AUTH_USER’] allora richiamo il login

if($_SERVER[‘PHP_AUTH_USER’]==””){
header(‘WWW-Authenticate: Basic realm=”Protezione Pagina’);
header(‘HTTP/1.0 401 Unauthorized’);
echo “Inserisci il messaggio o il codice HTML che vuoi esca se ho cliccato su Annulla
“;
exit();

// Se invece la variabile ha valore allora controlliamo se i valori inseriti sono corretti

}else{

// valori username e password

$username = “demo”;
$password = “demo”;

// Se non ho inserito lo username o risulta errato

if (($_SERVER[‘PHP_AUTH_USER’] == “”) || ($_SERVER[‘PHP_AUTH_USER’] != $username)){
header(‘HTTP/1.0 401 Unauthorized’);
echo “ACCESSO NEGATO – PAGINA PROTETTA DA PASSWORD
“;
echo “Errore: Username non specificato o non riconosciuto
“;
echo “Chiudere il Browser e riprovare l’accesso
“;
}

// Se non ho inserito la password o risulta errato

if (($_SERVER[‘PHP_AUTH_PW’] == “”) || ($_SERVER[‘PHP_AUTH_PW’] != $password)){
header(‘HTTP/1.0 401 Unauthorized’);
echo “ACCESSO NEGATO – PAGINA PROTETTA DA PASSWORD
“;
echo “Password non specificata o non riconosciuta
“;
echo “Chiudere il Browser e riprovare l’accesso
“;
}?>

// Inseriamo il codice HTML della pagina protetta

Autenticazione COOKIE

Per ogni Programmatore PHP che intendesse procedere in diverso modo è anche possibile l’autenticazione tramite Cookie che consente la costruzione di una pagina che funge da login e un altra che invece individua la pagina protetta. L’esempio è abbastanza semplice ma ogniProgrammatore PHP può ampliare questo banale esempio per rendere il tutto più completo e complesso. (Guarda L’esempio username:demo password: demo)


//Se ho cliccato sul tasto submit la variabile REQUEST_METHOD
//sarà valorizzata e dunque effettuerò il controllo
if($_SERVER['REQUEST_METHOD']=="POST"){
$username = "demo";
$password = "demo";
//Recupero dell'username e della password
$user = $_POST["username"];
$pass = $_POST["password"];
//se i parametri sono corretti genero un cookie
if(($user == $username)&&($pass == $password)){
//un cookie ha un valore temporale che possiamo specificare
//nel nostro caso abbiamo optato per 1 ora cioè 3600 secondi
setcookie("login", "OK", time() +3600);
header("Location: http://www.miosito.net/protetta.php");
}else{
header("Location: http://www.miosito.net/login.php");
}
//se invece non è valorizzata la variabile POST visualizzo il form di login
}else{ ?>
<form method="post" action="">
<label>Username:</label>
<input type="text" name="username" id="user" /><br />
<label>Password:</label>
<input type="password" name="password" id="pass" /><br />
<input type="submit" value="Effettua il login" />
<input type="reset" value="Cancella" />
</form>

Nella Pagina di destinazione http://www.miosito.net/protetta.php il Programmatore PHP dovrà includere l’HTML compreso tra il seguente codice:


<?php if (isset($_COOKIE["login"])){ ?>

<!--HTML PAGINA-->

<?php } ?>

Per completare il codice il Programmatore PHP potrebbe visualizzare un avviso di accesso negato nel caso si tenti di accedere alla pagina protetta direttamente o costruire un logout che valorizzi a 0 o elimini il Cookie precedentemente creato.

PER ULTERIORI INFORMAZIONI:

Daniele Tabacco
Programmatore PHP | Web Developer | Consulente Web e SEO

PHP - MySql - AJAX - HTML5 - JAVASCRIPT - CSS - JSON/XML - JQuery
WebApps, Applicazioni, Realizzazione Siti Mobile per iPhone e Android
Programmatore PHP - Consulente Web Marketing Napoli, Roma, Milano, Firenze.
Tel.+39 329.11.73.918
email: daniele.tabacco[at]gmail.com
skype: daniele.tabacco

Il tuo nome (richiesto)

La tua email (richiesto)

Oggetto

Il tuo messaggio

 


POTREBBE INTERESSARTI ANCHE:
Script realizzato con PHP per la lettura di un particolare elemento all'interno di un nodo XML
Creare una Pagina Facebook per la tua Azienda potrebbe rappresentare l'opportunità di aumentare la tua visibilità e i tuoi potenziali clienti, in questo articolo vedremo i vantaggi di una Pagina Facebook per Aziende
Ottimizzare i Contatti ricevuti dal Proprio Sito, per vendere i propri Servizi è possibile. ecco alcuni consigli per un Programmatore PHP o Gestore di un Sito.
Vuoi redere il tuo sito ancora più Social e vuoi che sia presente su Facebook? Grazie alle Open Graph anche chi non è Programmatore PHP potrà integrare il proprio sito nel network Facebook
Integrare elementi Social Media nel proprio sito è d'importanza assoluta nei progetti web, per aumentare la visibilità del proprio progetto, affidati ad un Programmatore PHP e Consulente Web Marketing esperto di Social Media


buzzoole code
Leggi altro:
Consulenza Web Marketing? No, Viaggio ad Amsterdam

Dato la necessità di staccare un po ad Agosto, quest’anno per ricaricare le batterie mi sono concesso un breve viaggio culturale...

Chiudi