ASP - L'objet Session

Décembre 2016

Introduction aux sessions

Le protocole HTTP est un protocole non connecté (on parle aussi de protocole sans états, en anglais stateless protocol), cela signifie que chaque requête sur une page web est traitée indépendamment des autres et qu'aucun mécanisme n'est prévu à la base pour pouvoir exploiter l'historique des différentes requêtes sur les pages successives. Ainsi le serveur web ne peut pas se « souvenir » de la requête précédente, ce qui empêche des utilisations telles que le commerce électronique, pour lequel une mémorisation des achats de l'utilisateur à travers les différentes pages est nécessaire.

Il est donc nécessaire de trouver un moyen de maintenir une certaine cohésion entre l'utilisateur et la requête, notamment :

  • reconnaître les requêtes provenant du même utilisateur,
  • associer un profil à l'utilisateur,
  • connaître les paramètres de l'application pour l'utilisateur (nombre de produits vendus, ...).

Ce mécanisme de gestion des états est appelé gestion de session (en anglais session tracking).

Présentation de l'objet Session

Le rôle de l'objet Session est ainsi de permettre de stocker temporairement (pendant toute la durée de vie de la session) des informations transmissibles de page en page. Le mécanisme utilisé par l'objet Session pour permettre de transmettre les informations est basée sur l'utilisation de cookies, mais il est réalisé de manière transparente, ce qui signifie que l'utilisateur n'a pas à s'en soucier. L'utilisation de l'objet Session est très simple, elle consiste uniquement à enregistrer une variable dans la session, à la récupérer tout aussi simplement. L'objet Session fournit également les mécanismes permettant de détruire les données de la session.

Les constituants de l'objet Session

L'objet Session possède plusieurs collections, propriétés et méthodes :

Collections Propriétés Méthodes
Contents Contents.count Contents.Remove()
StaticObjects Contents.item(nom) Contents.RemoveAll()
  StaticObjects.count Abandon
  StaticObjects.item(nom)  
  Codepage  
  LCID  
  SessionID  
  Timeout  

L'objet Session peut ainsi être vu comme un conteneur regroupant des données dynamiques rendues accessibles pour un visiteur, tout au long de sa navigation sur le site. L'objet Session regroupe ainsi en quelque sorte l'ensemble des variables globales de l'utilisateur.

Les événements OnStart et OnEnd

L'objet Session propose deux événements, OnStart() et OnEnd(), permettant respectivement d'exécuter des actions au démarrage et à l'arrêt de la session, c'est-à-dire au début de la navigation (ou plus exactement à l'ouverture de la session) ou lorsque l'utilisateur quitte le site (ou plus exactement ferme sa session).

La collection Contents

La collection Contents contient des variables dynamiques créées sur le serveur pour un utilisateur. Il s'agit d'une fonctionnalité très utile permettant par exemple de mettre en place très facilement un panier de courses ou des préférences !

La création d'une valeur dans la collection Contents se fait de la manière suivante :

Session.Contents("nom_variable") = variable

Il existe toutefois une notation équivalente, moins lourde :

Session("nom_variable") = variable

A l'inverse, l'utilisation d'une valeur stockée dans la session se fait en appelant Session("nom_variable"), par exemple comme suit :

Bienvenue <%Response.Write(Session("nom"))%>

La collection Contents contient elle-même deux propriétés et deux méthodes. Les propriétés de la collection Contents sont les suivantes :

  • Contents.count, représentant le nombre d'objets dans la collection ;
  • Contents.item(nom), représentant l'objet identifié par le nom passé entre parenthèses.

Les méthodes de la collection Contents sont les suivantes :

  • Contents.remove(nom), supprime l'objet identifié par le nom passé en argument ;
  • Contents.removeall(), supprime tous les objets de la collection.

Le code suivant permet d'afficher l'ensemble des variables contenues dans la session, ainsi que leurs valeurs :

<%
dim i
For Each i in Session.Contents
  Response.Write("
" & i & " : " & Session(i)) Next %>

La collection StaticObjects

La collection StaticObjects permet de manipuler les données contenues dans les balises HTML <OBJECT> et dont l'attribut scope vaut « application ».

La collection StaticObjects contient elle-même deux propriétés et deux méthodes. Les propriétés de la collection StaticObjects sont les suivantes :

  • StaticObjects.count, représentant le nombre d'objets dans la collection ;
  • StaticObjects.item(nom), représentant l'objet identifié par le nom passé entre parenthèses.

Les méthodes de la collection StaticObjects sont les suivantes :

  • StaticObjects.remove(nom), supprime l'objet identifié par le nom passé en argument ;
  • StaticObjects.removeall(), supprime tous les objets de la collection.

La méthode Abandon()

La méthode Abandon permet d'abandonner la session, c'est-à-dire de supprimer l'ensemble des données qui y sont stockées.

La propriété Timeout

La propriété Timeout permet de modifier la valeur (en minutes) de la durée de la session (par défaut 20 minutes) :

Session.Timeout = nombre_minutes

Plus d'information


A voir également :

Ce document intitulé «  ASP - L'objet Session  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.