Come creare, leggere ed eliminare le sessioni in codice PHP

Come creare, leggere ed eliminare le sessioni in codice PHP

Che cos'è una sessione in linguaggio PHP
Sebbene sia possibile archiviare dati utilizzando i cookie, questa modalità presenta alcuni problemi di sicurezza. Poiché i cookie sono memorizzati sul computer dell'utente, è possibile che un utente malintenzionato modifichi facilmente un contenuto di cookie per inserire dati potenzialmente dannosi nell'applicazione che potrebbero interrompere l'applicazione. Inoltre, ogni volta che il browser richiede un URL al server, tutti i dati dei cookie per un sito Web vengono inviati automaticamente al server all'interno della richiesta. Significa che se hai memorizzato 5 cookie sul sistema dell'utente, ciascuno con una dimensione di 4KB, il browser deve caricare 20 KB di dati ogni volta che l'utente visualizza una pagina, il che può influire sulle prestazioni del tuo sito. Puoi risolvere entrambi questi problemi usando la sessione PHP. Una sessione PHP memorizza i dati sul server anziché sul computer dell'utente. In un ambiente basato su sessione, ogni utente viene identificato tramite un numero univoco chiamato identificatore di sessione o SID. Questo ID sessione univoco viene utilizzato per collegare ogni utente con le proprie informazioni sul server come e-mail, post, ecc.

Avvio di una sessione PHP
Prima di poter memorizzare qualsiasi informazione nelle variabili di sessione, è necessario innanzitutto avviare la sessione. Per iniziare una nuova sessione, chiama semplicemente la funzione PHP session_start (). Creerà una nuova sessione e genererà un ID sessione univoco per l'utente.

Il codice PHP nell'esempio seguente avvia semplicemente una nuova sessione.


// Starting session
session_start();
?>

La funzione session_start () verifica innanzitutto se esiste già una sessione cercando la presenza di un ID sessione. Se ne trova uno, ovvero se la sessione è già avviata, imposta le variabili di sessione e, in caso contrario, avvia una nuova sessione creando un nuovo ID sessione.

Memorizzazione e accesso ai dati della sessione
You can store all your session data as key-value pairs in the $_SESSION[] superglobal array. The stored data can be accessed during lifetime of a session. Consider the following script, which creates a new session and registers two session variables.


// Sessione iniziale
session_start();
// Memorizzazione dei dati della sessione
$_SESSION["firstname"] = "Diego";
$_SESSION["lastname"] = "Rispoli";
?>

Per accedere ai dati della sessione che abbiamo impostato sul nostro esempio precedente da qualsiasi altra pagina dello stesso dominio Web, è sufficiente ricreare la sessione chiamando session_start () e quindi passare la chiave corrispondente all'array associativo $ _SESSION.


// Sessione iniziale
session_start();
// Accesso ai dati della sessione
echo 'Ciao, ' . $_SESSION["firstname"] . ' ' . $_SESSION["lastname"];
?>

Il codice PHP nell'esempio sopra produce il seguente output: Ciao, Diego Rispoli

Distruggere una sessione
Se desideri rimuovere determinati dati di sessione, disattiva semplicemente la chiave corrispondente dell'array associativo $ _SESSION, come mostrato nell'esempio seguente:


// Sessione iniziale
session_start();
// Rimozione dei dati della sessione
if(isset($_SESSION["lastname"])){
unset($_SESSION["lastname"]);
}
?>

Tuttavia, per distruggere completamente una sessione, è sufficiente chiamare la funzione session_destroy (). Questa funzione non ha bisogno di alcun argomento e una singola chiamata distrugge tutti i dati della sessione.


// Sessione iniziale
session_start();
// Distruggi, elimina sessione
session_destroy();
?>

La sessione PHP ha un valore di timeout - una durata, misurata in secondi - che determina per quanto tempo una sessione dovrebbe rimanere in vita in assenza di attività dell'utente. È possibile regolare questa durata del timeout modificando il valore della variabile session.gc_maxlifetime nel file di configurazione di PHP (php.ini).

Fonte (EN): tutorialrepublic.com