La session est un moyen pour conserver une variable entre plusieurs pages, c'est l'équivalent d'un cookie en plus sécurisé, parce que les informations sont stockées sur le serveur et non chez le client. Les sessions sont utilisées principalement pour la procédure de connexion à un site web.
La variable superglobale $_SESSION est utilisée pour conserver ou afficher les variables de sessions :
$_SESSION['pseudo'] = "john"; //créer une nouvelle variable de session.
echo $_SESSION['pseudo']; //afficher "John"
Il existe deux fonctions indispensables pour utiliser les sessions :
session_start() : pour démarrer une nouvelle session ou appeler la session existante. On doit appeler cette fonction au début de toutes les pages du site avant tout code HTML et avant tout affichage PHP par la fonction echo().
session_destroy() : Pour détruire la session en cours. On l'appelle seulement pour se déconnecter du site.
Exemple concret d'un site web protégé par l'authentification via les sessions :http://localhost/Projet1/login.php
Nom d'utilisateur correct est : admin
Mot de passe correct est : agent007
http://localhost/Projet1/verifier_login.php
session_start(); //On démarre la session
$login_correct = "admin"; //En réalité, on doit tirer ces informations de la base de données
$pass_correct = "agent007";
if (!empty($_POST['login']) && !empty($_POST['motdepasse'])){
if ($_POST['login'] == $login_correct && $_POST['motdepasse'] == $pass_correct){
$_SESSION['pseudo'] = $login_correct; //Création d'une variable de session
echo " Bienvenue Monsieur : ".$login_correct;
echo " Entrez au site";
}
else {
echo " Nom d'utilisateur ou mot de passe incorrect !";
echo " Retour";
}
}
else {
echo " Vous devez s'authentifier d'abord !";
echo " Retour";
}
?>
http://localhost/Projet1/page_protegee.php
session_start(); //On appelle la session
if (isset($_SESSION['pseudo']) && !empty($_SESSION['pseudo'])){ //On teste est-ce que la session est ouverte
echo " Utilisateur connecté : ".$_SESSION['pseudo']; //Affichage de la variable de session
echo " Déconnexion";
}
else {
echo " Page protégée !";
echo " Retour";
}
?>
http://localhost/Projet1/deconnexion.php
session_start(); //On appelle la session
session_destroy(); // On détruit la session
echo " Au revoir !";
echo " Connexion";
?>
Essayez d'ouvrir la page protégée avant que vous effectuez la connexion et vous remarquerez que ça ne marche pas : http://localhost/Projet1/page_protegee.php