Les Sessions en PHP

Les Sessions en PHP

  1. Objectifs

    • Connaitre les sessions en PHP
  2. Présentation des sessions PHP

    • Une session en PHP correspond à une façon de stocker des données différentes pour chaque utilisateur en utilisant un identifiant de session unique.
    • Comme les cookies, les sessions offrent également un moyen de maintenir l’état d’un site Web ou d’une application, en utilisant une approche légèrement différente.
    • Ce tutoriel explique comment les sessions fonctionnent sous PHP, et les fonctions PHP pour créer et utiliser des sessions au sein d’un Web application.
    • A présent, vous savez ce que sont les cookies : des fichiers texte stockés sur le système d’un utilisateur qui aident un site Web ou une application reconnaît l’utilisateur et récupère des informations spécifiques le concernant.
    • Le problème avec les cookies, c’est qu’ils ne sont pas très sécurisés : parce qu’ils sont stockés sur le client, il est possible pour tout utilisateur raisonnablement habile d’ouvrir le fichier cookie et de lire ou modifier les informations qui y sont stockées, parfois à des fins malveillantes.
    • C’est pourquoi de nombreux sites Web préfèrent utiliser des sessions. Les sessions fonctionnent un peu comme les cookies, sauf que les informations utilisées pour maintenir l’état sont stockées sur le serveur, plutôt que sur le client.
    • Dans un environnement basé sur des sessions, chaque client est identifié par un numéro—identifiant de session et ce numéro unique est utilisé pour relier chaque client avec ses informations sur le serveur.
    • Chaque fois que le client visite le site Web ou l’application, le site lit l’identifiant de session du client et restaure les informations d’état à partir d’une donnée référentiel sur le serveur.
    • Dans ce système, les informations d’état sont stockées dans une base de données SQL ou un fichier texte sur le serveur; par conséquent, les utilisateurs ne peuvent pas y accéder ou le modifier, ce qui rend l’ensemble du système tellement plus sûr.
    • L’identifiant de session lui-même peut être stocké sur le client dans un cookie, ou il peut être passé de page en page dans l’URL. Sous PHP, ce cookie est nommé PHPSESSID.
    • Les sections suivantes traitent des fonctions PHP pour créer des sessions, s’inscrire et utiliser variables de session et détruire les sessions.



  3. Création de sessions et de variables de session

    • Il est facile de démarrer une nouvelle session sous PHP : il suffit d’appeler la fonction session_start() pour créer une nouvelle session et générer un ID de session pour le client.
    • Une fois qu’une session a été créé, il devient possible de créer et d’attacher un nombre quelconque de variables de session à la séance ; ce sont comme des variables régulières, en ce sens qu’elles peuvent stocker du texte ou du numérique, mais elles sont aussi particulières car elles restent présentes tout au long de la session, au fur et à mesure que l’utilisateur clique sur différentes pages du site.
    • Les variables de session sont “enregistrées” en les enregistrant en tant que paires clé-valeur du tableau associatif $_SESSION .
    • Comme $_POST et $_GET, ce tableau est toujours disponible dans le portée global et peut être consulté directement à tout moment dans votre script PHP.
    • Exemple
    • <?php
      // start session
      session_start();
      // register session variables
      $_SESSION['surname'] = 'Riadh';
      $_SESSION['name'] = 'HAJJI';
      ?>
  4. Appeler une session

    • La fonction session_start() définit généralement un cookie contenant l’ID de session sur le système client. Par conséquent, comme avec la fonction setcookie(), les appels à session_start() doit précéder toute sortie générée par le script. Ceci est dû aux restrictions dans le Protocole HTTP qui nécessite l’envoi d’en-têtes de cookies avant toute sortie de script.
    • Il est désormais possible d’accéder à ces variables de session depuis n’importe quelle autre page du même Domaine Web.
    • Pour cela, créez un nouveau script PHP, recréez la session en appelant session_start() puis essayez d’accéder aux valeurs du tableau associatif $_SESSION, comme dans l’exemple suivant :
    • <?php
      // Démarrer la session
      session_start();
      // Lire les variables de session
      // sortie : "Bienvenue, Riadh HAJJI"
      echo 'Content de te revoir, ' . $_SESSION['surname'] . ' ' . $_SESSION['name'] ;
      ?>
      
  5. Suppression de sessions et de variables de session

    • Utiliser le tableau superglobale $_SESSION : unset()
      • Pour désinscrire une variable de session spécifique, désactivez simplement la clé correspondante du Tableau $_SESSION :
      • <?php
        // Démarrer la session
        session_start();
        // effacer la variable de session
        unset($_SESSION['name']);
        ?>
    • Détruire la session du visiteur avec: session_destroy()
      • Si vous voulez détruire la session du visiteur, vous pouvez faire un lien “Déconnexion” qui amène vers une page qui fait appel à la fonction session_destroy()
      • La commande session_destroy() détruit toutes les données enregistrées d’une session.
      • <?php
        // Démarrer la session
        session_start();
        // effacer la session
        session_destroy();
        ?>
    • Supprimer une variable dans la session courante avec : session_unregister()
      • La commande session_unregister() supprime une variable dans la session courante.
      • Elle retourne TRUE si success, FALSE sinon.
      • Elle a pour syntaxe :boolean session_unregister (string name)

    Il est important de noter qu’avant de pouvoir détruire une session avec session_destroy(), vous devez d’abord recréer l’environnement de session (afin qu’il y ait quelque chose à détruire) avec session_start().

  6. Durée de vie d’une session ?

    • Dés que l’on ferme le navigateur la session est détruite.
    • Sauf à configurer le fichier php.ini avec session.lifetime qui fixe la durée de vie, en secondes, du cookie envoyé au client. La valeur 0 signifie “jusqu’à ce que le client soit fermé”. Par défaut à 0. session.lifetime = 0
    • Donc si on le laisse à zéro la session dure jusqu’à la fermeture du navigateur, pour laisser les données durant 30 minutes, il faut remplacer 0 par 1800 (= 30 minutes * 60 secondes dans une minute).
  7. Différentes fonctions (sessions) utilisées en PHP

    • Pour utiliser les sessions, différentes fonctions PHP s’offrent à nous. Voici un petit tableau vous permettant de vous familiariser avec ces différentes fonctions :
    • Fonction Signification
      session_start Démarre une session
      session_register Enregistre une variable de session
      session_unregister Efface une variable de session
      session_is_registered Vérifie si une variable est déclarée pour la session en cours
      session_id Retourne l’id de la session en cours
      session_name Retourne le nom de la session en cours
      session_unset Detruit toutes les variables de la session en cours
      session_destroy Destruit la session en cours
  8. Application

    • Suivi des visites précédentes sur une page
      • Mettons maintenant toute cette théorie en contexte, en construisant une application simple qui démontre comment fonctionnent les sessions.
      • L’exemple suivant utilise une session pour enregistrer chaque visite effectuée par un utilisateur à une page Web.
      • A chaque visite, le script imprime les dates et heures de toutes les visites précédentes et ajoute un enregistrement pour la visite en cours à la session.
      • Les Sessions en PHP

      • Ce script fonctionne en créant une session à chaque fois qu’un utilisateur visite la page et en stockant la date des visites de l’utilisateur dans la variable de session $_SESSION[‘visits’].
      • A chaque visite suivante, la session est recréée, le tableau contenant les dates des visites précédentes sont restaurées et une boucle foreach est utilisée pour parcourir ce tableau et imprimer ses enregistrements dans un format de date et d’heure lisible par l’homme.