Ogni webdesigner prima o poi si troverà ad affrontare la creazione di un area riservata per i suoi utenti.
Per questo motivo è necessario sapersi destreggiare con le sessioni di PHP.
Quando si usano le sessioni, PHP non fa altro che salvare un cookie sul pc del client contenente l’ID di sessione, proprio per questo motivo è consigliabile che il proprio browser abbia i cookie abilitati per utilizzarle.
Spiegherò brevemente i concetti base per la creazione di un area riservata in PHP facendo uso delle sessioni.
Creiamo 3 file php (login.php, admin.php, logout.php):
login.php (riceve i dati dal form e li elabora per poi mandarli ad admin.php)
admin.php (pannello di amministrazione a cui un utente accede una volta loggato)
logout.php (permette la disconnessione)
Spieghiamo le varie istruzioni
session_start();
Deve essere inserita in ogni file che vogliamo proteggere da accessi non autorizzati e consiste nel creare un identificativo di sessione e mantenerlo. E’ importantissimo inserirla prima di ogni istruzione HTML
$_SESSION['nomevariabile'];
crea una variabile globale di sessione che potrà essere utilizzata in ogni file.
session_unset();
Distrugge le variabile nella sessione.
session_destroy();
Funzione che distrugge una sessione.
dettaglio del codice di login.php
<?php
session_start();
if (isset($_REQUEST["username"]) && (isset($_REQUEST["pass"])))
{
$username=$_REQUEST["username"];
$password=$_REQUEST["pass"];
if (($username=="iltuouser")&&($password=="latuapass"))
{
$_SESSION["username"]=$username;
$_SESSION["password"]=$password;
$_SESSION["autorized"]=1;
Header("Location:admin.php");
exit;
}
else{
$_SESSION["autorized"]=0; //errore e quindi autorizzazione negata
}
}
?>
Questo insieme di istruzioni non fa altro che verificare i parametri inseriti dall’utente e confrontarli con i dati esatti. Qualora siano esatti allora setto le variabili di sessione $_SESSION["username"], $_SESSION["password"], $_SESSION["autorized"] e ridireziono il browser nella pagina riservata, in caso contrario setto $_SESSION["autorized"] a 0 e non saremo autorizzati a visualizzare le pagine protette. Il codice Javascript è utile per mostrare un messaggio di errore all’utente. Le variabili di sessione le possiamo utilizzare in ogni pagina protetta semplicemente utilizzando l’istruzione echo $_SESSION["username"]; (es. Benvenuto <?php echo $_SESSION["username"];?>)
dettaglio del codice di admin.php
<?php
session_start();
if($_SESSION["autorized"]==0)
{
Header( "Location:login.php" );
}
?>
Questa istruzione inserita nella pagina di admin controlla se sei autorizzato oppure no a visualizzare la pagina, verificando se è settata la variabile di sessione $_SESSION["autorized"], altrimenti rimanda alla pagina di login.
dettaglio del codice di logout.php
<?php
session_start();
if($_REQUEST['logout']==1)
{
$_SESSION=array(); // Desetta tutte le variabili di sessione.
session_destroy(); //DISTRUGGE la sessione.
header("Location: login.php"); //si ricarica la pagina di login
exit; //si termina lo script in modo da ritornare alla schermata di login
}
?>
Questo insieme di istruzioni non fa altro che distruggere la sessione nel caso in cui l’utente richiami la pagina logout.php passando il valore logout=1 (es logout.php?logout=1)
Con queste brevi istruzioni avremo un sistema protetto per gestire le aree riservate. L’importante è ricordarsi di inserire l’istruzione session_start(); in ogni file che utilizza le sessioni e prima di ogni riga html di codice.
Alla prossima
Creare un area riservata in PHP con l'uso delle sessioni,



Quando si usano le sessioni, PHP non fa altro che salvare un cookie sul pc del client contenente i dati memorizzati.. QUESTA E’ UNA CASTRONERIA
PHP MEMORIZZA L’ID DI SESSIONE NEL COOCKIE TUTTO IL RESTO E’ MEMORIZZATO SUL SERVER
Commento by Peppino — 7 novembre 2011 @ 09:53
errata corrige.. COOKIE
Commento by Peppino — 7 novembre 2011 @ 09:56
Grazie Peppino per la segnalazione, per dati intendevo l’id di sessione non i dati memorizzati.
Meglio specificarlo comunque
Commento by admin — 7 novembre 2011 @ 14:14
ciao, grazie per l’utilissima guida, ho seguito tutte le istruzioni ma quando vado ad inserire il codice session_start(); su html non riesce a richiamare il php, è come se non funzionasse. Potresti per favore dirmi cosa devo fare per inserirlo correttamente?
Grazie mille
Commento by niko — 9 novembre 2011 @ 16:23
Ciao Niko, per utilizzare le sessioni il file deve essere con estensione php altrimenti non viene interpretato
Commento by admin — 9 novembre 2011 @ 18:30
ciao niko,
ti sei dimenticato di aprire la sessione nel file login.php
Commento by Federico — 10 febbraio 2012 @ 19:05
grazie mille per la segnalazione
Commento by admin — 10 febbraio 2012 @ 19:38
Non funge. La sessione rimane sempre aperta anche passando 1 con querystring al logout.. infatti ricaricaricando admin.php dopo aver settato logout ad 1 nel logout accede lo stesso. Come si può risolvere il problema??
Commento by Luca — 8 dicembre 2012 @ 08:27
x luca
Probabilmente non hai inserito session_start() prima di ogni altra riga anche nel file logout.php
Commento by admin — 8 dicembre 2012 @ 17:39