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:
Come un Programmatore PHP può Utilizzare le espressioni Regolari di PHP per aggiungere un attributo ad un Link
Breve guida al Backup di un Database MySQL utilizzando PHP, utile ad ogni Programmatore PHP che voglia utilizzare questo Script PHP per utilizzarlo con Crontab o con pulsanti per Backup temporizzati
Una Semplice WebApps Realizzata con HTML/Javascript/CSS consentirà l'accesso rapido da iPhone/iPad (Ma anche da desktop) alle vostre Google Analytics. Programmatore PHP Realizzazione Siti Mobile
Le espressioni Regolari sono uno strumento Utile e da Utilizzare per ogni Programmatore PHP, in questo script estraiamo da una stringa di testo tutti gli elementi compresi tra due Caratteri o Tag
JQuery e Javascript sono ormai componenti comuni di tutti i Siti Internet, per rendere le proprie applicazioni completamente dinamiche e interattive, ma abusare di questa tecnologia si potrebbe rivelare un Boomerang, allora quando e come utilizzarli?


buzzoole code
Leggi altro:
Convertire un link in un codice embed con PHP (youtube, vimeo o dailymotion)

Durante lo sviluppo di un sito web che consenta il data entry di dati e/o url, un Programmatore PHP potrebbe...

Chiudi