Une session est représentée sous la forme d'un fichier conservé sur le serveur. Par exemple, à chaque fois qu'un visiteur se logue sur votre site, une session est crée avec un identifiant unique. La session est ressemble à un cookie, en plus sécurisé car elle est stocké sur le serveur et non chez le client. De plus, la session n'est valable que pendant un certain laps de temps, configurable dans le fichier de config du serveur. (Env. 30 minutes par défaut) Attention, la session est automatiquement détruite lorsque le visiteur ferme son navigateur.
Les sessions sont souvent utilisées pour les mécanismes d'authentification, de zone membres…
« Si la variable de session $_SESSION["login"] n'existe pas, le visiteur n'a pas le droit de visionner la page toto.php »
Pour utiliser les sessions, il existe des fonctions, voici les principales :
session_start();
Démarre une session ou appelle la session existante.
Appeler la dans toutes les pages qui utilisent les sessions. Attention : il ne faut pas qu'il y ai du code envoyer avant cette fonction, il faut la placer au début du fichier avant toutes balises HTML ou fonction php.
session_destroy();
Détruit la session en cours.
$_SESSION
Tableau global qui contient toute les variables de sessions crée pour la session courante
Exemple(s)
Page1.php
<?php session_start(); if( !isset($_SESSION["nom"])) { echo "<h1>Demarrage de la session</h1>"; $_SESSION["nom"]="Toto"; $_SESSION["date_co"]=date("d-m-Y"); $_SESSION["heure_co"]=time(); $_SESSION["compt"]=0; echo "<h3>Nom: ".$_SESSION["nom"]."<br/>Date: ".$_SESSION["date_co"]. "<br/>Heure: ".$_SESSION["heure_co"]."<br/>Compteur: ".$_SESSION["compt"]."</h3>"; } ?> <html> <head> <title>Test des sessions</title> </head> <body> <?php echo "Temps de Session : "; $temps=time()-$_SESSION["heure_co"]; echo date("i:s",$temps)."<br/>"; echo "<a href='./page2.php'>Aller a la page 2</a><br/>"; echo "<a href='./deco.php'>Se deconnecter</a>"; ?> </body> </html>
Page2.php
<?php session_start(); ?> <html> <head> <title>Test des sessions</title> </head> <body> <?php if(!isset($_SESSION["nom"])) { echo "<h1>Erreur, pas de session</h1>"; echo "<a href='./page1.php'>Aller a la page 1</a><br/>"; } else { echo "<h1>Page 2, page sécurisée</h1>Temps de Session : "; $temps=time()-$_SESSION["heure_co"]; echo date("i:s",$temps)."<br/>"; echo "<a href='./page1.php'>Aller a la page 1</a><br/>"; echo "<a href='./deco.php'>Se deconnecter</a>"; } ?> </body> </html>
deco.php
<?php session_start(); print <<<DEBUT <html> <head> <title>Test des sessions</title> </head> <body> DEBUT; if(!isset($_SESSION["nom"])) { echo "<h1>Erreur, pas de session</h1>"; echo "<a href='./page1.php'>Aller a la page 1</a>"; } else { session_destroy(); echo "<h1>Fin de session de ".$_SESSION['nom']."</h1>"; echo "Temps: "; $temps=time()-$_SESSION["heure_co"]; echo date("h:i:s",$temps)."<br/>"; echo "<a href='./page1.php'>Aller a la page 1</a><br/>"; echo "<a href='./page2.php'>Aller a la page 2 (fonctionne pas car vous n'avez plus de session)</a>"; } print <<<FIN </body> </html> FIN; ?>