Creare un area riservata in PHP con l’uso delle sessioni

9
108
Creare un area riservata in PHP con l'uso delle sessioni

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&#91;"username"&#93;) && (isset($_REQUEST&#91;"pass"&#93;)))
	{
		$username=$_REQUEST&#91;"username"&#93;;
		$password=$_REQUEST&#91;"pass"&#93;;

		if (($username=="iltuouser")&&($password=="latuapass"))
		{
			$_SESSION&#91;"username"&#93;=$username;
			$_SESSION&#91;"password"&#93;=$password;
			$_SESSION&#91;"autorized"&#93;=1;
			Header("Location:admin.php");
			exit;
		}
		else{
			$_SESSION&#91;"autorized"&#93;=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&#91;"autorized"&#93;==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&#91;'logout'&#93;==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

 

9 Commenti

  1. 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

     
  2. Grazie Peppino per la segnalazione, per dati intendevo l’id di sessione non i dati memorizzati.
    Meglio specificarlo comunque

     
  3. 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

     
  4. Ciao Niko, per utilizzare le sessioni il file deve essere con estensione php altrimenti non viene interpretato

     
  5. 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??

     
  6. x luca
    Probabilmente non hai inserito session_start() prima di ogni altra riga anche nel file logout.php

     

LASCIA UN COMMENTO

Please enter your comment!
Please enter your name here