Le sessioni in PHP 5

Le sessioni in PHP ci consentono di trasferire informazioni da una pagina ad un’altra.
Il classico esempio potrebbe essere il caso di un’area riservata alla quale si accede tramite un form di login. Senza l’ausilio delle sessioni (e in particolare dei cookies che esse utilizzano) sarebbe difficile, oltre che strutturalmente scorretto, ricordare il login dell’utente una volta che chiude il browser oppure quando passa ad una pagina successiva.

Nella nostra pagina di login dove è presente il form per l’inserimento delle credenziali, come primissima cosa diciamo al server di iniziare una nuova sessione:

<?php session_start() ?>
/* qui ci sarà il form */

La pagina, una volta inviati i dati dal form, dovrà controllare che le credenziali siano corrette. Se lo sono possiamo salvarci dei dati grazie alla superglobale $_SESSION in questo modo:

<?php
     // salvo l'id utente
     $_SESSION['id_utente'] = $id_utente;
?>

Una volta che abbiamo salvato il nostro dato, possiamo utilizzarlo nelle pagine che seguiranno (come ad esempio una pagina della scheda di un documento riservato) in questo modo:

<?php
     session_start();
 
     if(isset($_SESSION['id_utente'])){
          // l'utente è loggato
     } else{
          die('Area ad accesso riservato');
     }
?>

Come vedete è sempre necessario inizializzare la sessione con session_start().
La primissima cosa che potrebbe venirci in mente è quella di salvarci in un’altra variabile di sessione (cookie) la password dell’utente criptata, in modo tale da effettuare il controllo della coppia id_utente – password nel nostro database.

Per concludere vediamo ora come si chiude una sessione, ad esempio per la classica azione di logout di un utente:

<?php
     session_start();
     $_SESSION = array(); // svuoto la superglobale
     session_destroy();          
?>

Attenzione
Una volta settata una variabile di sessione (cookie) è necessario eseguire un header(‘Location’) per fare in modo che la pagina stessa riconosca il cookie settato.
Ad esempio, se abbiamo il form di login contenuto nella pagina area_riservata.php e vogliamo fare in modo che, se l’utente è loggato, visualizzi un elenco di documenti, altrimenti visualizzi il form, dobbiamo fare in questo modo:

<?php
     session_start();     
 
     if($_POST['azione'] == 'invia_form'){
          // salvo l'id utente
          $_SESSION['id_utente'] = $id_utente;
          header('Location /area_riservata.php');
          exit;
     }
 
     if(isset($_SESSION['id_utente'])){
          // l'utente è loggato, visualizzo elenco doc
     } else{
          // l'utente non è loggato, visualizzo il form di login
     }
?>

friimaind

Mi chiamo Massimiliano e sono uno sviluppatore web. Ho aperto questo blog principalmente come agenda dove tenere traccia di tutte le mie passioni :)

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *