Un altro sistema di memorizzazione di informazioni รจ offerto dallโutilizzo delle sessioni. A differenza dei cookie le sessioni di PHP non scrivono nulla sul computer del utente, ma operano (quasi esclusivamente) sul nostro server scrivendo, allโinterno di unโapposita cartella, degli specifici files dove vengono salvati alcuni dati importanti relativamente alla sessione di navigazione del nostro utente.
Questi file vengono poi "associati" al computer dei nostri utenti mediante due metodi:
- attraverso lโutilizzo di un tipo particolare di cookie detto cookie di sessione;
- oppure passando il parametro PHPSESSID allโinterno di tutte le URL del sito visitate dallo stesso utente. Ad esempio:
www.miosito.it/pagina.php?PHPSESSID=............
NOTA: questโultima tecnica puรฒ presentare dei rischi di sicurezza tantโรจ che molti webmaster la disabilitano attraverso il file PHP.INI oppure mediante .htaccess
Una volta che la sessione sarร terminata il file con i dati della sessione stessa verrร eliminato cosรฌ come il cookie di sessione presente sul computer client. 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 (se avete un sito in hosting non dovete fare nulla in quanto questo tipo di configurazione รจ giร stato effettuato dal vostro provider di servizi).
La funzione da utilizzare 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.
Esempio di utilizzo delle sessioni con PHP
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:
<?php
//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:
<?php
//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;
?>
Eโ bene precisare che la variabile superglobale $_SESSION non รจ altro che una semplice array e, come tale, puรฒ essere gestita. Se, ad esempio, vogliamo vedere tutti i valori salvati nella session potremo effettuare:
print_r($_SESSION);
Eliminare una sessione di PHP
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();