La sessione in PHP è un meccanismo che permette di mantenere lo stato dell’utente mentre naviga attraverso le pagine di un sito web. Questo è particolarmente utile in applicazioni web dove il mantenimento delle informazioni dell’utente tra diverse pagine è essenziale, come nei carrelli della spesa di un e-commerce, nei moduli multipagina, e nelle applicazioni che richiedono autenticazione.
In PHP, una sessione consente di archiviare dati su base temporanea sul server, associando ogni utente a una sessione unica tramite un identificatore di sessione (session ID), che viene passato avanti e indietro tra il client e il server. Questo identificatore può essere memorizzato come un cookie sul client o passato tramite URL.
Per iniziare una sessione in PHP, si utilizza la funzione `session_start()`. Questa funzione deve essere chiamata prima di qualsiasi output HTML nel codice PHP, per evitare errori. Ecco un esempio di come iniziare e gestire una sessione:
```
// Inizia la sessione
session_start();
// Imposta una variabile di sessione
$_SESSION[‘username’] = ‘JohnDoe’;
// Recupera la variabile di sessione
echo ‘Benvenuto, ‘ . $_SESSION[‘username’];
// Termina la sessione e cancella le variabili di sessione
session_unset(); // Elimina tutte le variabili di sessione
session_destroy(); // Distrugge la sessione attuale
?>
```
1. Configurazione della sessione: Alcuni parametri delle sessioni sono configurabili tramite il file `php.ini`. Ad esempio: – `session.gc_maxlifetime` determina il tempo massimo di validità della sessione. – `session.save_path` specifica il percorso dove vengono salvati i file di sessione sul server.
1. Salvare e recuperare dati della sessione: Dati semplici possono essere salvati direttamente nell’array superglobale `$_SESSION`. Esempi comuni includono:
\`\`\`php // Salvataggio dati $_SESSION[‘user_id’] = 123; $_SESSION[‘logged_in’] = true; // Recupero dati if(isset($_SESSION[‘logged_in’]) && $_SESSION[‘logged_in’] == true) { echo ‘User ID: ‘ . $_SESSION[‘user_id’]; } \`\`\`1. Chiusura della sessione: Quando una sessione non è più necessaria, può essere terminata con `session_unset()` (per eliminare tutte le variabili di sessione) e `session_destroy()` (per distruggere la sessione).
1. Sicurezza delle sessioni: È importante assicurare che le sessioni siano al sicuro da attacchi come hijacking e fixation. Alcuni metodi includono: – Rigenerare l’identificatore di sessione con `session_regenerate_id()` dopo l’autenticazione. – Configurare session cookie con flag `HttpOnly` e `Secure`.
```
// Inizia la sessione
session_start();
// Rigenera l’ID della sessione per motivi di sicurezza
session_regenerate_id(true);
// Imposta variabili di sessione
$_SESSION[‘username’] = ‘MarioRossi’;
$_SESSION[‘email’] = ‘mario@example.com’;
// Recupero dati di sessione
echo ‘Username: ‘ . $_SESSION[‘username’];
echo ‘Email: ‘ . $_SESSION[‘email’];
// Terminare la sessione
session_unset();
session_destroy();
?>
```
- [PHP Manual: Session Handling](https://www.php.net/manual/en/book.session.php)
- [PHP: session\_start](https://www.php.net/manual/en/function.session-start.php)
- [PHP: session_regenerate_id](https://www.php.net/manual/en/function.session-regenerate-id.php)
- [PHP: php.ini Directive List](https://www.php.net/manual/en/ini.list.php)
Questi documenti offrono una visione completa di come funzionano le sessioni in PHP, come configurarle e come gestirle in modo sicuro ed efficace.