Les sessions PHP
Une session est un mécanisme qui permet de garder temporairement en mémoire des valeurs dans un fichier stocké sur le serveur. Une session permet notamment de stocker des valeurs comme un mot de passe et pseudo lors d'une connexion à un espace membre ou plus simplement de faire circuler des informations de page en page.
La durée d'une session est définie par l'hébergeur (grosso modo 30 minutes. Voir du côté de la fonction phpinfo()) et peut être modifié sous condition d'avoir accès à certains paramêtres de configuration du serveur.
Ouvrir une session
Une session doit être déclaré avant tout envoie de code HTML et est généralement inséré en tout début de page :<?php //Ouverture d'une session session_start(); ?>
Déclarer une session :
On déclare une session en utilisant la variable $_SESSION[''] contant elle même le nom de la variable :<?php //Ouverture d'une session session_start(); //On déclare une session $_SESSION['nom_de_ma_variable'] = 'Héllo, je suis une variable de session!'; ?>Dans cet exemple, ma variable ce nomme : " nom_de_ma_variable " et à pour valeur le texte : " Héllo, je suis une variable de session! ". C'est à vous de choisir le nom que vous souhaitez donner à votre variable.
Afficher une variable de session
Pour afficher une variable de session, c'est tout simple! On effectue un simple "echo" de la variable :<?php //Ouverture d'une session session_start(); //On déclare une session $_SESSION['nom_de_ma_variable'] = 'Héllo, je suis une variable de session!'; //On affiche la valeur de la variable echo $_SESSION['nom_de_ma_variable']; ?>
Supprimer une variable de session
Pour supprimer une variable de session, on utilise la fonction unset() auquel on passe en paramêtre la variable de session à détruire :<?php //Ouverture d'une session session_start(); //On déclare une session $_SESSION['nom_de_ma_variable'] = 'Héllo, je suis une variable de session!'; //On affiche la valeur de la variable echo $_SESSION['nom_de_ma_variable']; //On détruit la variable de session nom_de_ma_variable unset($_SESSION['nom_de_ma_variable']); ?>Pour supprimer l'intégralité d'une session on procède un peut différement en ré-écrivant le tableau de session puis en le détruisant :
<?php //Ouverture d'une session session_start(); //On déclare une session $_SESSION['nom_de_ma_variable'] = 'Héllo, je suis une variable de session!'; //On affiche la valeur de la variable echo $_SESSION['nom_de_ma_variable']; //On réécrit le tableau $_SESSION = array(); //On détruit le tableau réécrit session_destroy(); ?>
Exemple d'utilisation des variables de sessions
Nous allons voir concrètement et de façon simpliste comment fonctionne les variables de sessions, comment elles transites de page en page et comment on les détruits. Cet exemple rassemble un simple formulaire de connexion, 2 pages et la création des variables de sessions associées au formulaire. Le code qui suit est largement commenté et ce passera donc de commentaires en plus
.pageA.php :
<?php //Ouverture de la session session_start(); //Si l'action de valider a été faite if(isset($_POST['submit'])){ //les identifiants $pseudo = "toto"; $pass = "titi"; //On teste les identifiants if($_POST['pseudo'] == $pseudo AND $_POST['pass'] == $pass){ //On créé les sessions $_SESSION['pseudo']=$_POST['pseudo']; $_SESSION['pass']=$_POST['pass']; } else{ echo 'Mot de passe ou pseudo invalide!'; } } //Si les 2 sessions existes if(isset($_SESSION['pseudo']) AND isset($_SESSION['pass'])){ //On affiche ce que l'on veut echo 'Vous êtes identifié sous le pseudo <b>'.$_SESSION['pseudo'].'</b> avecpageB.php :
comme mot de passe <b>'.$_SESSION['pass'].'</b> '; //Lien vers une autre page echo '<a title="Page suivante" href="pageB.php">Page suivante</a><br/>'; //Lien de déconnexion echo '<a title="Déconnexion" href="?deconnexion=close">Déconnexion</a><br/>'; //Pour le fun, on affiche le tableau des sessions echo '<b>Tableau des sessions en cours :</b><br/><pre>'; print_r($_SESSION); echo '</pre>'; //Si la variable déconnexion existe et qu'elle correspond if(isset($_GET['deconnexion']) AND $_GET['deconnexion']=="close"){ //on réécrit le tableau $_SESSION = array(); //on détruit le tableau réécrit session_destroy(); //on redirige header('Location: pageA.php'); exit(); } } //Juste pour tester que les variables de sessions sont vides, on affiche le formulaire if(empty($_SESSION['pseudo']) AND empty($_SESSION['pass'])){ ?> <form id="connexion" method="post" action="#"> <label for="pseudo">Pseudo :</label> <input type="text" id="pseudo" name="pseudo" /><br/> <label for="pass">Mot de Passe :</label> <input type="password" id="pass" name="pass" /><br/> <input type="submit" id="submit" name="submit" value="Connexion" /> </form> <?php } ?>
<?php //Ouverture de la session session_start(); //si les 2 sessions existes if(isset($_SESSION['pseudo']) AND isset($_SESSION['pass'])){ echo 'Vous êtes identifié sous le pseudo <b>'.$_SESSION['pseudo'].'</b> avec
comme mot de passe <b>'.$_SESSION['pass'].'</b> '; echo '<a title="Page précédente" href="pageA.php">Page précédente</a><br/>'; } else{ echo 'Vous devez être connecté pour avoir accès à cette page!'; } ?>
Pour les utilisateur de "Free.fr" et pour utiliser les sessions, vous devez créer un dossier nommé sessions (au pluriel) à la racine de votre site par l'intermediaire de votre ftp.

Signaler une erreur
fopen() : lire et écrire dans un fichier
Le langage PHP
Les cookies PHP


