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[] * Création d'une variable de session : * Variable : * $_SESSION[] = .. literalinclude:: file/sessions_fonctions.php :language: php * 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