Sessioni PHP
Una sessione è un modo per memorizzare informazioni (in variabili) da utilizzare su più pagine.
A differenza di un cookie, le informazioni non vengono memorizzate sul computer dell'utente.
Che cos'è una sessione PHP?
Quando lavori con un'applicazione, la apri, apporti alcune modifiche e poi la chiudi. Questo è molto simile a una Sessione. Il computer sa chi sei. Sa quando avvii l'applicazione e quando la termini. Ma su internet c'è un problema: il web server non sa chi sei o cosa fai, perché l'indirizzo HTTP non mantiene lo stato.
Le variabili di sessione risolvono questo problema memorizzando le informazioni sull'utente da utilizzare su più pagine (ad esempio nome utente, colore preferito, ecc.). Per impostazione predefinita, le variabili di sessione durano fino a quando l'utente non chiude il browser.
Così; Le variabili di sessione contengono informazioni su un singolo utente e sono disponibili per tutte le pagine di un'unica applicazione.
Suggerimento: se hai bisogno di una memoria permanente, potresti voler archiviare i dati in un database .
Avvia una sessione PHP
Viene avviata una sessione con la session_start()
funzione.
Le variabili di sessione vengono impostate con la variabile globale PHP: $_SESSION.
Ora creiamo una nuova pagina chiamata "demo_session1.php". In questa pagina, iniziamo una nuova sessione PHP e impostiamo alcune variabili di sessione:
Esempio
<?php
// Start the session
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// Set session variables
$_SESSION["favcolor"] = "green";
$_SESSION["favanimal"] = "cat";
echo "Session variables are set.";
?>
</body>
</html>
Nota: lasession_start()
funzione deve essere la prima cosa nel tuo documento. Prima di qualsiasi tag HTML.
Ottieni i valori delle variabili di sessione PHP
Successivamente, creiamo un'altra pagina chiamata "demo_session2.php". Da questa pagina, accederemo alle informazioni sulla sessione che abbiamo impostato nella prima pagina ("demo_session1.php").
Si noti che le variabili di sessione non vengono passate individualmente a ogni nuova pagina, ma vengono recuperate dalla sessione che apriamo all'inizio di ogni pagina ( session_start()
).
Si noti inoltre che tutti i valori delle variabili di sessione sono archiviati nella variabile globale $_SESSION:
Esempio
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// Echo session variables that were set on previous page
echo "Favorite color is " . $_SESSION["favcolor"] . ".<br>";
echo "Favorite animal is " . $_SESSION["favanimal"] . ".";
?>
</body>
</html>
Un altro modo per mostrare tutti i valori delle variabili di sessione per una sessione utente consiste nell'eseguire il codice seguente:
Esempio
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
print_r($_SESSION);
?>
</body>
</html>
Come funziona? Come fa a sapere che sono io?
La maggior parte delle sessioni imposta una chiave utente sul computer dell'utente simile a questa: 765487cf34ert8dede5a562e4f3a7e12. Quindi, quando una sessione viene aperta su un'altra pagina, esegue la scansione del computer per una chiave utente. Se c'è una corrispondenza, accede a quella sessione, in caso contrario, avvia una nuova sessione.
Modifica una variabile di sessione PHP
Per modificare una variabile di sessione, è sufficiente sovrascriverla:
Esempio
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// to change a session variable, just overwrite it
$_SESSION["favcolor"] = "yellow";
print_r($_SESSION);
?>
</body>
</html>
Distruggi una sessione PHP
Per rimuovere tutte le variabili di sessione globali e distruggere la sessione, utilizzare session_unset()
e session_destroy()
:
Esempio
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// remove all session variables
session_unset();
// destroy the session
session_destroy();
?>
</body>
</html>