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:
Monitorare e Migliorare la tua presenza web, può essere più facile grazie all'utilizzo di Strumenti SEO che migliorano l'attività di Consulenza SEO e l'attività di Monitoraggio che ogni Programmatore PHP deve alla Post Realizzazione di un Sito Web
Un metodo pratico e utile per Leggere un file XML usando PHP e le funzioni DOM, adatto ad un Programmatore PHP o Consulente Web che voglia integrare informazioni provenienti da un foglio XML
Realizzare un Sito Web con un Design Responsive, vuol dire realizzare un prodotto compatibile con le diverse tipologie di soluzioni Mobile e quindi merita la giusta importanza tra i Web Developer
semplice script jQuery per la Cookie Law, utile anche per chi non è un Programmatore jQuery o non ha esperienza nella scrittura del codice PHP
Una breve Guida MySQL per spiegare come poter selezionare diverse righe della stessa tabella e raggrupparle per un determinato valore.


buzzoole code
Leggi altro:
Inviare email con allegati usando PHP

n questo breve articolo ritorniamo a parlare di PHP e della possibilità di creare un modulo per Inviare email con...

Chiudi