Les sessions

Généralités :

  • Système qui permet de conserver temporairement des informations sur un ensemble de requêtes d’un même visiteur
  • Informations stockées sur le serveur
  • Informations associées au visiteur par un identifiant (sessionid) temporaire
  • Informations perdues à la fin de la visite (déconnexion ou expiration de la session)‏
  • Informations de tous types

Mécanisme :

  • Une requête arrive au serveur web
  • Si les sessions sont activées, le serveur tente de lire la cookie « PHPSESSID » sur la requête
  • Si ce cookie n’existe pas, un nouvel identifiant est créé (aléatoirement) et est envoyé comme cookie au navigateur (sans date d’expiration)‏
  • Si ce cookie existe, le serveur lit l’identifiant et l’associe à un fichier correspondant à cet identifiant, où se trouvent des infos spécifiques à cet utilisateur

Fonctions PHP :

  • Initialisation d’une session
    • Fonction :
      • session_start()‏
  • Lecture d’une variable de session :
    • Variable :
      • $_SESSION[<nomVariable>]
  • Création d’une variable de session :
    • Variable :
      • $_SESSION[<nomVariable>] = <variable>
<?php

session_start();

$_SESSION['langage'] = 'PHP';

$tableau = ['un', 'deux', 'trois', 'quatre'];

$_SESSION['tabl'] = $tableau;
  • Destruction d’une session
    • Fonction :
      • session_destroy()‏
      • unset($_SESSION)‏
  • Définition d’un nom de session (au lieu de PHPSESSID)‏
    • Fonction :
      • session_name(‘nomSession’)‏

Eléments avancés :

  • Stockage : PHP stocke les sessions dans un fichier temporaire du système.
    • Fonction :
      • session_save_path() : donne le répertoire de stockage des sessions
  • Concurrence : PHP verouille les fichiers sessions pour qu’un script n’y accède à la fois.
    • Fonctions :
      • session_write_close() : force l’enregistrement

La durée de vie d’une session

  • Une session peut « expirer » :
  • Si son âge en seconde est plus important que la directive session.gc_maxlifetime (par défaut = 1440, soit 24 minutes), le « garbage collector » risque de la supprimer
  • Une session peut être « supprimée » :
  • La session est détruite par programmation

Et sans cookies

  • L’identifiant de session peut être placé automatiquement dans les URL (?PHPSESSID=xxxxxx)‏
  • Cette méthode est automatiquement utilisée si PHP détecte que les cookies ne fonctionnent pas (sauf si session.use_only_cookie=1)‏
  • Cela implique que tous les liens de l’application doivent être réécrits pour incorporer ce sessionid. Cette réécriture peut être réalisée automatiquement par PHP (session.use_trans_sid=1 et url_rewriter_tags)‏

Application concrête de session :

  • L’accès authentifié à une application
  • La “mise en mémoire” des données introduites par l’utilisateur

Table des Matières

Sujet précédent

Lecture d’un fichier

Sujet suivant

Orienté Objet (POO)

Cette page