Gennaio 13, 2025

session_set_cookie_params() in PHP: Cos’è e A Cosa Serve?

Introduzione

La funzione session_set_cookie_params() in PHP è utilizzata per definire i parametri del cookie di sessione prima di avviare una sessione. Questa funzione consente di impostare specifiche come la durata del cookie, il percorso in cui è valido, il dominio e se deve essere trasmesso solo su connessioni sicure. Comprendere come utilizzare correttamente session_set_cookie_params() è essenziale per gestire le sessioni in modo sicuro e personalizzato.

Spiegazione

La funzione session_set_cookie_params() accetta diversi parametri che consentono di configurare il comportamento del cookie di sessione. La sintassi è la seguente:

session_set_cookie_params(
    int $lifetime,
    string $path = "",
    string $domain = "",
    bool $secure = false,
    bool $httponly = false
): bool

$lifetime: Imposta la durata del cookie in secondi.

$path: Specifica il percorso in cui il cookie è valido. Se non specificato, il valore predefinito è la directory corrente.

$domain: Definisce il dominio per il quale il cookie è valido.

$secure: Se impostato su true, il cookie sarà trasmesso solo su connessioni HTTPS.

$httponly: Se impostato su true, il cookie sarà accessibile solo tramite HTTP e non JavaScript, migliorando la sicurezza contro attacchi XSS.

Quando si utilizza

Utilizzare session_set_cookie_params() è consigliabile quando si desidera avere un maggiore controllo sui cookie di sessione. È particolarmente utile in scenari dove è necessario aumentare la sicurezza delle sessioni, come nei siti che richiedono autenticazioni, o quando si vuole che le sessioni durino più a lungo del default.

Esempi

Ecco un esempio di come utilizzare session_set_cookie_params() per impostare un cookie di sessione che dura 30 minuti, è valido per l’intero dominio, e viene trasmesso solo su connessioni sicure:

<?php
// Imposta i parametri del cookie di sessione
session_set_cookie_params(
    1800,       // Durata di 30 minuti
    "/",        // Percorso valido per l'intero dominio
    "",         // Dominio predefinito
    true,       // Trasmetti solo su connessioni HTTPS
    true        // Accessibile solo tramite HTTP
);

// Avvia la sessione
session_start();
?>

Un altro esempio, in cui il cookie è valido solo per una specifica directory e non è limitato a connessioni sicure:

<?php
// Imposta i parametri del cookie di sessione
session_set_cookie_params(
    3600,       // Durata di 1 ora
    "/app",     // Percorso valido solo per la cartella /app
    "",         // Dominio predefinito
    false,      // Non limitato a connessioni HTTPS
    true        // Accessibile solo tramite HTTP
);

// Avvia la sessione
session_start();
?>

Giorgio

Sono un Web Developer con oltre 20 anni di esperienza nello sviluppo di applicazioni web complesse. Specializzato in PHP, gestione di database relazionali e non relazionali, e integrazione di API, realizzo soluzioni robuste e scalabili per soddisfare esigenze aziendali e tecniche. Mi occupo di architetture server-side, ottimizzazione delle performance e automazione dei processi.