English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial di base PHP

Tutorial avanzato PHP

PHP & MySQL

Manuale di riferimento PHP

Sessione PHP

In questo tutorial, imparerai come utilizzare le sessioni PHP per memorizzare temporaneamente alcuni dati sul server.

Cos'è una Sessione

Nonostante tu possa utilizzare i cookie per memorizzare dati, esistono alcuni problemi di sicurezza. Poiché i cookie vengono memorizzati sul computer dell'utente, gli attaccanti possono facilmente modificare il contenuto dei cookie per inserire dati potenzialmente dannosi nel tuo applicativo, potendo così danneggiare il tuo applicativo.

Inoltre, ogni volta che il browser invia una richiesta all'URL del server, tutti i dati dei cookie vengono automaticamente inviati nel richiesta. Questo significa che se hai memorizzato 5 cookie di dimensioni di 4KB ciascuno sul sistema dell'utente, il browser deve caricare 20KB di dati ogni volta che l'utente visualizza una pagina, il che potrebbe influenzare le prestazioni del tuo sito.

Puoi risolvere questi problemi utilizzando PHP session. PHP session memorizza i dati sul server invece del computer dell'utente. In un ambiente basato su sessione, ogni utente è identificato da un numero univoco chiamato identificatore di sessione o SID. Questo ID di sessione unico viene utilizzato per collegare ogni utente alle informazioni memorizzate sul server (ad esempio, email, post, ecc.).

Suggerimento:L'ID di sessione viene generato casualmente dal motore PHP e è quasi impossibile da indovinare. Inoltre, poiché i dati di sessione vengono memorizzati sul server, non è necessario inviarli con ogni richiesta del browser.

Inizio Sessione

Prima di memorizzare qualsiasi informazione in una variabile di sessione, è necessario avviare la sessione. Per iniziare una nuova sessione, è sufficiente chiamare la funzione PHP session_start(). Questa creerà una nuova sessione e genererà un ID di sessione univoco per l'utente.

Il codice PHP nell'esempio seguente inizia una nuova sessione.

<?php
//Inizio sessione
session_start();
?>

La funzione session_start() verifica prima l'esistenza dell'ID di sessione per determinare se la sessione è già in corso. Se trova una sessione, significa che è già stata avviata e quindi imposta le variabili di sessione; altrimenti, avvia una nuova sessione creando un nuovo ID di sessione.

Attenzione:Deve chiamare session_start() all'inizio della pagina (prima di qualsiasi output generato dallo script nel browser), proprio come quando si utilizza la funzione setcookie() per impostare i cookie.

Memorizzare e accedere ai dati di sessione

Puoi memorizzare tutti i dati di sessione come coppie di chiave-valore nell'array superglobale $_SESSION[]. Puoi accedere ai dati memorizzati durante la vita della sessione. Vedi lo script seguente, che crea una nuova sessione e registra due variabili di sessione.

<?php
//Stai avviando la sessione
session_start();
 
//Memorizza i dati di sessione
$_SESSION["firstname"] = "Peter";
$_SESSION["lastname"] = "Parker";
?>

Per accedere ai dati di sessione impostati su altre pagine dello stesso dominio Web, è sufficiente chiamare session_start() per riavviare la sessione e passare i relativi chiavi all'array associativo $_SESSION.

<?php
//Stai avviando la sessione
session_start();
 
//Accedi ai dati di sessione
echo 'Hi, ' . $_SESSION["firstname"] . ' ' . $_SESSION["lastname"];
?>

Il codice PHP nell'esempio sopra genera l'output seguente.

Hi, Peter Parker

Attenzione:Per accedere ai dati di sessione sulla stessa pagina, non è necessario creare una nuova sessione, poiché è già stata avviata in alto nella pagina.

Distruggi Sessione

Se vuoi eliminare alcuni dati di sessione, è sufficiente rimuovere la configurazione del relativo chiave dell'array associativo $_SESSION, come nell'esempio seguente:

<?php
//Avvia la sessione
session_start();
 
//Stai eliminando i dati di sessione
if(isset($_SESSION["lastname"])){
    unset($_SESSION["lastname"]);
}
?>

Ma per distruggere completamente la sessione, è sufficiente chiamare la funzione session_destroy(). Questa funzione non richiede alcun parametro e una chiamata distruggerà tutti i dati di sessione.

<?php
//Avvia la sessione
session_start();
 
//Distruggi la sessione
session_destroy();
?>

Attenzione:Prima di distruggere la sessione utilizzando la funzione session_destroy(), se l'ambiente di sessione non esiste, è necessario creare nuovamente la sessione utilizzando la funzione session_start() per poterla distruggere.

Ogni sessione PHP ha un valore di scadenza (durata, in secondi), che determina quanto tempo la sessione deve rimanere attiva in assenza di attività utente. Puoi modificare il valore della variabile session.gc_maxlifetime nel file di configurazione PHP (php.ini) per regolare questo tempo di scadenza.