Introduzione

In questo articolo si descrive quello che è una sessione, come crearla, utilizzarla e distruggerla in PHP. Si spiega anche un paio di consigli per garantirne la sicurezza.

$_SESSION

$_SESSION è un array c le informazioni da tutte le pagine richieste che un utente fa durante la sua visita a un sito o da un’applicazione web. Un modo fondamentale per spiegare cos’è una sessione è come è immaginando il seguente scenario:
Quando si lavora con un’applicazione, la si apre, si apportano alcune modifiche, e poi la si chiude.
Questo è il compito della sessione nella sua forma più semplice.
Lo scenario di esempio ricorda il processo che avviene quando si utilizza un sistema di login. Il processo può essere estremamente complicato o incredibilmente semplice, fino a quando c’è un valore che persiste tra le richieste. Le informazioni memorizzate nella sessione possono essere recuperate in qualsiasi momento mentre la sessione è aperta.
Anche se ci sono molti utenti che accedono al sito allo stesso tempo, ognuno di loro avrà la sua propria sessione e grazie agli ID univoci assegnati e gestiti da PHP, ogni sessione permette a ciascun utente di avere a dispozione le informazioni solo a se stesso. Le informazioni di sessione vengono memorizzati sul server anziché sul computer dell’utente (così come vengono memorizzati dai cookies), il che rende le sessioni più sicure dei cookies tradizionali per passare informazioni tra le pagine richieste.
Usando le sessioni
Prima di poter memorizzare le informazioni in una sessione è necessario avviare il gestore di sessioni di PHP. Questo viene fatto all’inizio del vostro codice PHP, e deve essere fatto prima di qualsiasi testo, HTML o JavaScript che venga inviato al browser. Per avviare la sessione, si chiama la funzione session_start() all’inizio del file:
<?php
// partenza del motore!
session_start();
// dati della sessione
$_SESSION["username"] = "Pippo";
?>
session_start() inizia la sessione tra l’utente e il server, e permette di memorizzare i valori nella variabile $_SESSION per essere accessibile da altri script in seguito.
Nel tuo secondo file, si chiama session_start() ancora una volta e la sessione continua; quindi è possibile recuperare i valori da $_SESSION.
<?php
// continua la sessione
session_start();
// recupera i dati della sessione
echo "Username = " . $_SESSION["username"];
?>
Questo esempio è una dimostrazione di base che spiega come archiviare e di recuperare i dati in una sessione. Nel primo script, il valore “Pippo” è stato associato alla chiave “username” nell’array $_SESSION. Nel secondo script, si recupera l’informazione che è stata richiesta indietro attraverso l’array $_SESSION dalla sua chiave associativa. $_SESSION consente di archiviare e recuperare le informazioni attraverso le richieste di pagine di sessione nella navigazione attiva di un utente.
Finalizzare una sessione
È così importante come lo è quello di iniziare una sessione. Anche se una sessione è solo un modo per memorizzare temporaneamente i dati, è molto importante pulire tutto dopo il suo uso in modo da garantire la massima sicurezza quando si tratta di informazioni potenzialmente sensibili. È anche una buona pratica per evitare di avere una quantità enorme di dati di sessione sul server.
Per eliminare un singolo valore di sessione utilizzare la funzione unset():
<?php
session_start();
// eliminare il valore di username
unset($_SESSION["username"]);
?>
Per eliminare tutti i valori di sessione, è possibile utilizzare la funzione session_unset():
<?php
session_start();
// eliminare tutti i valori della sessione
session_unset();
?>
Entrambi gli esempi riguardano solo i dati memorizzati nella sessione, non la sessione stessa. È ancora possibile memorizzare altri valori nella variabile $_SESSION dopo averlo chiamato. Se si desidera interrompere completamente la sessione, per esempio quando un utente si disconnette, si utilizza la funzione session_destroy().
<?php
session_start();
// termina al sessione
session_destroy();
?>
È consigliato che quando si è sicuri che non è più necessaria la sessione di distruggerla utilizzando la funzione session_destroy(), piuttosto che eliminare solo i suoi valori con la funzione session_unset(). Se si eliminano solo i valori, la stessa sessione è ancora attiva ed è possibile iniettare del codice malizioso in quelle sessioni con dei valori manipolati.

Sono queste le sessioni in poche parole e la sua la funzionalità è molto semplice ma molto potente all’interno di PHP, che fornisce un’elegante soluzione al problema del passaggio dei dati tra le pagine web.

Similari
Policy
9%
Il presente documento ha lo scopo di descrivere le modalità di gestione del presente sito web, relativamente al trattamento dei dati personali degli utenti che lo consultano. L’Informativa, resa ai sensi dell’art. 13 D.Lg…
Comprendere meglio Random
8% Php
I valori casuali sono cruciali nella programmazione per lo sviluppo di sistemi sicuri che non sono vulnerabili a dannose sovversioni. La crittografia, per esempio, si basa su valori di generazione casuali e la loro riprodu…
Gestire le date in italiano con PHP
5% Php
Usare la funzione date() per manipolare le date con il formato convenzionale è più che sufficente. Quando si tratta, però, di gestire le date in un’altro linguaggio che non sia l’inglese (l’italiano per esempio), comincia …
Guida allo Zend Framework
5% Zend
Zend Framework è un framework open source per PHP. Zend Framework separa la logica e le azioni usando il pattern MVC (Model View Controller). Cosa è lo Zend Framework? Framework per la costruzione di siti web più veloci e …
Come disattivare il tasto Invio nei Forms
5% JQuery
Nei form HTML se si sta compilando una casella di testo e si preme il tasto Invio, l’azione invierà i dati compilati nel modulo, anche se non avete finito di riempire il resto delle informazioni. [expand expanded=”true” ex…