Un altro sistema di memorizzazione di informazioni è offerto dall'utilizzo delle
sessioni.
A differenza dei cookie le sesioni non scrivono nulla sul computer del utente, ma operano (quasi esclusivamente) sul nostro server creando degli specifici files dove vengono salvati alcuni dati importanti relativamente alla sessione di navigazione del nostro utente. Una volta che la sessione sarà terminata il files con i dati della sessione stessa verrà eliminato. Una sessione termina nel momento in cui l'utente chiude il browser (o in un diverso momento eventualmente specificato nelle impostazioni del server o nel codice dell'applicazione).
Le sessioni vengono utilizzate, ad esempio, nella gestione delle autenticazioni (login) degli utenti che, una volta loggati, verranno identificati come tali da tutte le pagine (.php) del sito.
La prima cosa da fare se vogliamo lavorare con le sessioni è impostare nel file di configurazione del PHP ("php.ini") la direttiva session.save_path, indicando la directory nella quale verranno salvate le informazioni sulle sessioni dei nostri utenti.
La funzione da utilizzare poi all'interno delle nostre pagine .php per aprire una sessione è
session_start(). Questa funzione non prevede parametri.
La funzione session_start() deve essere necessariamente utilizzata prima dell'invio di output: nella parte precedente del nostro files .php non deve pertanto essere già stato scritto ed inviato del codice HTML (o altro tipo di output) il quale comprometterebbe il buon esito della nostra funzione.
Facciamo un esempio per vedere, in concreto, come funziona session_start().
Poniamo di voler aprire una sessione dove salvare username e password del nostro utente (dati che ci sono stati forniti tramite un form di login). Ecco il codice:
<?
//Apro la sessione e...
session_start();
//Recupero username e password dal form
$username = $_POST['user'];
$password = $_POST['pass'];
//Salvo i dati...
$_SESSION['username'] = $username;
$_SESSION['password'] = $password;
?>
A questo punto abiamo salvato all'interno della nostra sessione (grazie alla variabile superglobale
$_SESSION) due diversi valori: username e password.
Nelle successive pagine .php sarà molto semplice recuperare questi valori, ecco un esempio:
<?
//Apro la sessione e...
session_start();
//Recupero i dati...
$username = $_SESSION['username'];
$password = $_SESSION['password'];
//facciamo una stampata a video!
echo "Ciao " . $username . " la tua password è " . $password;
?>
Per finire vediamo come
eliminare una sessione (ad esempio a seguito di logout).
//Per eliminare una specifica variabile di sessione useremo:
unset($_SESSION['username']);
//Per eliminare tutte le variabili di sessione useremo:
$_SESSION = array();