In questo articolo “Le sessioni e i cookies in PHP” definiamo il concetto di cookies e di sessione. Spiego la differenza tra i due concetti e il loro impiego. Al termine dell’articolo vediamo anche un esempio pratico

In questo articolo “Le sessioni e i cookies in PHP” definiamo il concetto di cookies e di sessione. Spiego la differenza tra i due concetti e il loro impiego. Al termine dell’articolo vediamo anche un esempio pratico


main.zip (308 download )

Indice dei contenuti

1. Introduzione

Quando si sviluppano applicazioni web, è fondamentale mantenere lo stato dell’utente tra diverse pagine. HTTP è un protocollo stateless, il che significa che ogni richiesta inviata al server è indipendente dalle precedenti. Per superare questa limitazione, si usano sessioni e cookie, che permettono di conservare informazioni relative a un utente tra diverse richieste HTTP.

Differenze tra sessioni e cookies

I cookie vengono memorizzati nel browser dell’utente e possono essere utilizzati per conservare dati tra più visite al sito.

Per impostare un cookie in PHP, si utilizza la funzione setcookie(), che ha la seguente sintassi:

setcookie(nome, valore, scadenza, percorso, dominio, sicurezza, httpOnly);

cookies

setcookie("utente", "MarioRossi", time() + 3600, "/");

I cookie vengono recuperati utilizzando la variabile superglobale $_COOKIE:

if (isset($_COOKIE["utente"])) {
    echo "Il valore del cookie 'utente' è: " . $_COOKIE["utente"];
}

Per eliminare un cookie, si imposta una data di scadenza nel passato:

setcookie("utente", "", time() - 3600, "/");

Sessioni in PHP

Le sessioni permettono di memorizzare informazioni sugli utenti sul server. A differenza dei cookie, i dati delle sessioni non sono memorizzati nel browser dell’utente.

Avvio di una Sessione

Per avviare una sessione in PHP, si usa session_start(). Questo permette di accedere o creare una sessione:

session_start();

Esempio di assegnazione di una variabile di sessione:

session_start();
$_SESSION["username"] = "MarioRossi";

Recupero dei Dati della Sessione

Per ottenere il valore di una variabile di sessione si utilizza la variabile superglobale $_SESSION:

session_start();
if (isset($_SESSION["username"])) {
    echo "Benvenuto, " . $_SESSION["username"];
}

Distruzione della Sessione

Per terminare una sessione e rimuovere tutte le variabili associate:

session_start();
session_unset(); // Rimuove tutte le variabili di sessione
session_destroy(); // Distrugge la sessione

Vediamo ora un esempio pratico di un sistema di login che utilizza sessioni e cookie.

Pagina di Login (login.php)

<?php
session_start();

if ($_SERVER["REQUEST_METHOD"] = = "POST") {
    $username = $_POST["username"];
    $password = $_POST["password"];

    // Simuliamo un login corretto (username: admin, password: 12345)
    if ($username = = = "admin" && $password = = = "12345") {
        $_SESSION["username"] = $username;

        // Se l'utente ha selezionato "Ricordami", creiamo un cookie
        if (isset($_POST["remember"])) {
            setcookie("username", $username, time() + (86400 * 30), "/"); // Cookie valido per 30 giorni
        }

        header("Location: dashboard.php");
        exit();
    } else {
        echo "Credenziali errate.";
    }
}
?>

<form method="post">
    Username: <input type="text" name="username" required><br>
    Password: <input type="password" name="password" required><br>
    <input type="checkbox" name="remember"> Ricordami<br>
    <input type="submit" value="Login">
</form>

Pagina Protetta (dashboard.php)

<?php
session_start();

// Se la sessione non è attiva, proviamo a recuperare il valore dal cookie
if (!isset($_SESSION["username"]) && isset($_COOKIE["username"])) {
    $_SESSION["username"] = $_COOKIE["username"];
}

// Se l'utente non è autenticato, lo rimandiamo al login
if (!isset($_SESSION["username"])) {
    header("Location: login.php");
    exit();
}

echo "Benvenuto, " . $_SESSION["username"];
?>

<a href="logout.php">Logout</a>

Logout (logout.php)

<?php
session_start();
session_unset();
session_destroy();

// Eliminazione del cookie
setcookie("username", "", time() - 3600, "/");

header("Location: login.php");
exit();
?>

Conclusioni

  • Le sessioni sono ideali per mantenere le informazioni dell’utente durante una sessione attiva, specialmente per autenticazione e dati sensibili.
  • I cookie sono utili per conservare dati per un periodo prolungato e possono essere utilizzati per la funzione “Ricordami” nei login.
  • Combinarli può migliorare l’esperienza utente, garantendo sia sicurezza che persistenza dei dati.

Nella sezione DOWNLOAD o direttamente da qui: https://profgiagnotti.it/download/4860/?tmstv=1744539632 è possibile scaricare gli script descritti nell’articolo

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *