In questo tutorial imparerete come memorizzare alcuni dati sul server su base temporanea utilizzando sessione PHP.
Che cos’è una sessione
Anche se è possibile memorizzare i dati utilizzando i cookie, ma ha alcuni problemi di sicurezza. Poiché i cookie sono memorizzati sul computer dell’utente, è possibile che un utente malintenzionato modifichi facilmente il contenuto di un cookie per inserire dati potenzialmente dannosi nella tua applicazione che potrebbero interrompere la tua 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, ognuno con dimensioni 4KB, il browser deve caricare 20KB di dati ogni volta che l’utente visualizza una pagina, il che può influire sulle prestazioni del tuo sito.
È possibile risolvere entrambi questi problemi utilizzando la sessione PHP. Una sessione PHP memorizza i dati sul server piuttosto che sul computer dell’utente., In un ambiente basato sulla sessione, ogni utente viene identificato tramite un numero univoco chiamato session identifier o SID. Questo ID di sessione univoco viene utilizzato per collegare ogni utente con le proprie informazioni sul server come e-mail, post, ecc.
Suggerimento: Gli ID di sessione sono generati casualmente dal motore PHP che è quasi impossibile da indovinare. Inoltre, poiché i dati di sessione sono memorizzati sul server, non devono essere inviati con ogni richiesta del browser.,
Avvio di una sessione PHP
Prima di poter memorizzare qualsiasi informazione nelle variabili di sessione, è necessario avviare la sessione. Per iniziare una nuova sessione, è sufficiente chiamare la funzione PHP session_start()
. Creerà una nuova sessione e genererà un ID di sessione univoco per l’utente.
Il codice PHP nell’esempio seguente avvia semplicemente una nuova sessione.,
Esempio
Download
<?php// Starting sessionsession_start();?>
La funzione session_start()
prima controlla se esiste già una sessione cercando la presenza di un ID di sessione. Se ne trova uno, cioè se la sessione è già iniziata, imposta le variabili di sessione e se non lo fa, inizia una nuova sessione creando un nuovo ID di sessione.
Nota: È necessario chiamare la funzione session_start()
all’inizio della pagina, ovvero, prima di qualsiasi output generato dal tuo script nel browser, proprio come fai mentre imposti i cookie con la funzionesetcookie()
.
Memorizzazione e accesso ai dati della sessione
È possibile memorizzare tutti i dati della sessione come coppie chiave-valore nell’array superglobale $_SESSION
. È possibile accedere ai dati memorizzati durante la durata di una sessione. Si consideri il seguente script, che crea una nuova sessione e registra due variabili di sessione.,
Per accedere ai dati di sessione che abbiamo impostato sul nostro esempio precedente da qualsiasi altra pagina sullo stesso dominio web, è sufficiente ricreare la sessione chiamando session_start()
e quindi passare la chiave corrispondente all’array associativo $_SESSION
.
Il codice PHP nell’esempio precedente produce il seguente output.
Nota: Per accedere ai dati della sessione nella stessa pagina non è necessario ricreare la sessione poiché è già stata avviata nella parte superiore della pagina.,
Distruggere una Sessione
Se si desidera rimuovere alcuni dati di sessione, semplicemente disattivare il tasto corrispondente del $_SESSION
array associativo, come mostrato nel seguente esempio:
Tuttavia, per distruggere una sessione completamente, è sufficiente chiamare il session_destroy()
funzione. Questa funzione non ha bisogno di alcun argomento e una singola chiamata distrugge tutti i dati della sessione.,
Esempio
Download
<?php// Starting sessionsession_start(); // Destroying sessionsession_destroy();?>
Nota: Prima di distruggere una sessione con il session_destroy()
la funzione è necessario ricreare l’ambiente sessione, se non è già lì con il session_start()
funzione, in modo che ci sia qualcosa da distruggere.
Ogni sessione PHP ha un valore di timeout — una durata, misurata in secondi — che determina per quanto tempo una sessione deve rimanere in vita in assenza di qualsiasi attività dell’utente., È possibile regolare questa durata di timeout modificando il valore della variabile session.gc_maxlifetime
nel file di configurazione PHP (php.ini
).