PHP Sessions
Une session est un moyen de stocker des informations (dans des variables) à utiliser sur plusieurs pages.
Contrairement à un cookie, les informations ne sont pas stockées sur l'ordinateur de l'utilisateur.
Qu'est-ce qu'une session PHP ?
Lorsque vous travaillez avec une application, vous l'ouvrez, apportez des modifications, puis vous la fermez. Cela ressemble beaucoup à une session. L'ordinateur sait qui vous êtes, quand vous commencez l'application et quand vous la terminez. Cependant, sur Internet, il y a un problème : le serveur web ne sait pas qui vous êtes ni ce que vous faites, car l'adresse HTTP ne maintient pas d'état.
Les variables de session résolvent ce problème en stockant des informations utilisateur à utiliser sur plusieurs pages (par exemple, nom d'utilisateur, couleur préférée, etc.). Par défaut, les variables de session durent jusqu'à ce que l'utilisateur ferme le navigateur.
Ainsi, les variables de session contiennent des informations sur un seul utilisateur et sont disponibles pour toutes les pages d'une application.
Astuce : Si vous avez besoin d'un stockage permanent, vous voudrez peut-être stocker les données dans une base de données .
Démarrer une session PHP
Une session est démarrée avec la fonction session_start() .
Les variables de session sont définies avec la variable globale PHP : $_SESSION.
Maintenant, créons une nouvelle page appelée "demo_session1.php". Dans cette page, nous démarrons une nouvelle session PHP et définissons quelques variables de session :
Exemple
<?php
// Démarrer la session
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// Définir les variables de session
$_SESSION["favcolor"] = "green";
$_SESSION["favanimal"] = "cat";
echo "Les variables de session sont définies.";
?>
</body>
</html> Remarque : La fonction session_start() doit être la toute première chose dans votre document, avant tous les tags HTML.
Obtenir les valeurs des variables de session PHP
Ensuite, nous créons une autre page appelée "demo_session2.php". À partir de cette page, nous allons accéder aux informations de session que nous avons définies sur la première page ("demo_session1.php").
Remarquez que les variables de session ne sont pas passées individuellement à chaque nouvelle page ; elles sont plutôt récupérées à partir de la session que nous ouvrons au début de chaque page ( session_start() ).
Remarquez également que toutes les valeurs des variables de session sont stockées dans la variable globale $_SESSION :
Exemple
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// Afficher les variables de session qui ont été définies sur la page précédente
echo "La couleur préférée est " . $_SESSION["favcolor"] . ".<br>";
echo "L'animal préféré est " . $_SESSION["favanimal"] . ".";
?>
</body>
</html> Une autre façon de montrer toutes les valeurs des variables de session pour une session utilisateur est d'exécuter le code suivant :
Exemple
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
print_r($_SESSION);
?>
</body>
</html> Comment ça fonctionne ? Comment sait-il que c'est moi ?
La plupart des sessions définissent une clé utilisateur sur l'ordinateur de l'utilisateur qui ressemble à ceci : 765487cf34ert8dede5a562e4f3a7e12. Ensuite, lorsqu'une session est ouverte sur une autre page, elle scanne l'ordinateur à la recherche d'une clé utilisateur. S'il y a une correspondance, elle accède à cette session ; sinon, elle démarre une nouvelle session.
Modifier une variable de session PHP
Pour changer une variable de session, il suffit de l'écraser :
Exemple
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// Pour changer une variable de session, il suffit de l'écraser
$_SESSION["favcolor"] = "yellow";
print_r($_SESSION);
?>
</body>
</html> Détruire une session PHP
Pour supprimer toutes les variables de session globales et détruire la session, utilisez session_unset() et session_destroy() :
Exemple
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// Supprimer toutes les variables de session
session_unset();
// Détruire la session
session_destroy();
?>
</body>
</html>