L'array $_SESSION in PHP

L'array $_SESSION in PHP

Come già detto, le sessioni sono un modo per conservare i dati dell'utente mentre naviga tra le pagine di un sito web, ad esempio quando un utente effettua l'accesso ad un sito tramite nome utente e password, questi vengono memorizzati in una sessione. In questo modo, ogni volta che l'utente accede a una pagina protetta del sito web, il server può verificare che l'ID di sessione corrisponda ai dati memorizzati nella sessione e consentire l'accesso solo se l'autenticazione ha avuto successo.

Per gestire i dati delle sessioni in PHP possiamo usare l'array superglobale $_SESSION, esso contiene i valori di sessione per un utente specifico. Viene utilizzato per mantenere informazioni persistenti durante la navigazione di un utente sul sito web, ad esempio per memorizzare le preferenze dell'utente, il contenuto del carrello della spesa, l'username e password ecc... I valori memorizzati in $_SESSION possono essere recuperati e utilizzati in qualsiasi pagina del sito, a condizione che la sessione sia attiva.

Sintassi di $_SESSION in PHP:

Prima di utilizzare $_SESSION è necessario avviare la sessione con la funzione session_start();

session_start();

Per impostare un valore di sessione:

$_SESSION['nome_chiave'] = valore;

Per recuperare un valore di sessione:

$valore = $_SESSION['nome_chiave'];

Per eliminare un valore di sessione:

unset($_SESSION['nome_chiave']);

Esempio dell'utilizzo di $_SESSION in PHP

In questo esempio creiamo una pagina HTML contenente un modulo con delle opzioni di colore. Quando l'utente seleziona una delle opzioni e fa clic su "Invia preferenza", viene inviato un POST al file sessioni.php. Il codice PHP nel file sessioni.php inizia la sessione e controlla se è stato inviato un POST con il nome "preferenza". Se è così, stampa "submit avvenuto..." e salva la preferenza dell'utente nella variabile di sessione $_SESSION['preferenzacolori'].

<?php
    session_start();
    if(isset($_POST['preferenza'])){
        echo 'submit avvenuto...';
        $_SESSION['preferenzacolori'] = $_POST['colore'];
    };
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
   <title>Sessioni</title>
</head>
<body>
<a href="pagina-2.php">Pagina 2</a>
 <form action="sessioni.php" method="post">
    <label for="colore">Quale colore preferisci?</label><br>
    <input type="radio" name="colore" value="rosso">Rosso<br>
    <input type="radio" name="colore" value="rosso">Blu<br>
    <input type="radio" name="colore" value="verde">Verde<br>
    <input type="radio" name="colore" value="giallo">Giallo<br>
    <input type="submit" name ="preferenza" value="Invia preferenza">
</form>
</body>
</html>

Passiamo ora ad un altra pagina (pagina-2.php) dove controlleremo se il valore relativo a $_SESSION['preferenzacolori'] è stato salvato:

<?php
    session_start();
    echo  $_SESSION['preferenzacolori'];
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Seconda pagina</title>
</head>
<body>
    <button onclick="history.back()">Go Back</button>
</body>
</html>

Come possiamo vedere, in questo esempio, l'informazione è stata salavata e successivamente recuperata in un altra pagina.

Affinché questo avvenga, le informazioni relative alle sessioni vengono memorizzate sul server in dei file che possiamo "scoprire" tramite l'invocazione della funzione session_save_path() e possiamo capire il nome del file tramite l'id univoco di sessione tramite l'invocazione della funzione session_id().

<?php
    session_start();
    echo session_id() . '<br>';
    echo session_save_path(); exit;
    echo  $_SESSION['preferenzacolori'];
?>
Id di sessione e cartella dove viene memorizzato il file relativo alla/e sessioni
Contenuto del file
Contenuto del file

La domanda successiva è: Come fa il server a sapere in quale file leggere le informazione, dato che sicuramente ci saranno più file di sessioni, ogni file relativo ad un client? La risposta ci viene data analizzando i cookie.

Lo stato delle sessioni

Lo stato di una sessione indica se una sessione è attiva o inattiva per un utente specifico. Una sessione è attiva quando un utente ha iniziato una sessione sul sito web e il server ha creato un ID di sessione univoco per l'utente. Durante la navigazione del sito, l'ID di sessione viene utilizzato per identificare l'utente e recuperare i valori di sessione associati.

Per conoscere lo status di una sessione possiamo utilizzare la funzione session_status()

<?php
// stato della sessione 
session_start();
$statoSessione = session_status();

if($statoSessione === PHP_SESSION_NONE) { // valore 1: sessione non attiva
 echo "Sessione non attiva";
} else if($statoSessione === PHP_SESSION_ACTIVE) { // valore 2: sessione attiva
 echo "Sessione Attiva";
}
?>

Scritto da Donato Pirolo

Ciao, sono Donato, frontend developer con una smisurata passione per la SEO. Creo strumenti ad hoc per aiutare aziende e professionisti ad essere cercati sul web e trovare clienti.

Potrebbero interessarti

Lascia un commento

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

Copyright © 2023
linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram