Objet de session ASP


Un objet Session stocke des informations sur ou modifie les paramètres d'une session utilisateur.


L'objet Séance

Lorsque vous travaillez avec une application sur votre ordinateur, vous l'ouvrez, faites quelques modifications, puis vous la fermez. Cela ressemble beaucoup à une session. L'ordinateur sait qui vous êtes. Il sait quand vous ouvrez l'application et quand vous la fermez. Cependant, sur Internet, il y a un problème : le serveur Web ne sait pas qui vous êtes et ce que vous faites, car l'adresse HTTP ne conserve pas l'état.

ASP résout ce problème en créant un cookie unique pour chaque utilisateur. Le cookie est envoyé à l'ordinateur de l'utilisateur et contient des informations permettant d'identifier l'utilisateur. Cette interface est appelée l'objet Session.

L'objet Session stocke des informations sur ou modifie les paramètres d'une session utilisateur.

Les variables stockées dans un objet Session contiennent des informations sur un seul utilisateur et sont disponibles pour toutes les pages d'une application. Les informations communes stockées dans les variables de session sont le nom, l'identifiant et les préférences. Le serveur crée un nouvel objet Session pour chaque nouvel utilisateur et détruit l'objet Session lorsque la session expire.


Quand commence une session ?

Une session démarre lorsque :

  • Un nouvel utilisateur demande un fichier ASP et le fichier Global.asa inclut une procédure Session_OnStart
  • Une valeur est stockée dans une variable de session
  • Un utilisateur demande un fichier ASP et le fichier Global.asa utilise la balise <object> pour instancier un objet avec une portée de session

Quand une session se termine-t-elle ?

Une session se termine si un utilisateur n'a pas demandé ou actualisé une page dans l'application pendant une période spécifiée. Par défaut, c'est 20 minutes.

Si vous souhaitez définir un délai d'expiration plus court ou plus long que la valeur par défaut, utilisez la propriété Timeout .

L'exemple ci-dessous définit un intervalle de temporisation de 5 minutes :

<%
Session.Timeout=5
%>

Utilisez la méthode Abandon pour mettre fin à une session immédiatement :

<%
Session.Abandon
%>

Remarque : Le principal problème avec les sessions est QUAND elles doivent se terminer. Nous ne savons pas si la dernière demande de l'utilisateur était la dernière ou non. Nous ne savons donc pas combien de temps nous devons garder la session "vivante". Attendre trop longtemps une session inactive consomme des ressources sur le serveur, mais si la session est supprimée trop tôt, l'utilisateur doit tout recommencer car le serveur a supprimé toutes les informations. Trouver le bon intervalle de temporisation peut être difficile !

Astuce : Ne stockez que de PETITES quantités de données dans des variables de session !



Stocker et récupérer des variables de session

La chose la plus importante à propos de l'objet Session est que vous pouvez y stocker des variables.

L'exemple ci-dessous définit le nom d' utilisateur de la variable de session sur "Donald Duck" et l' âge de la variable de session sur "50":

<%
Session("username")="Donald Duck"
Session("age")=50
%>

Lorsque la valeur est stockée dans une variable de session, elle est accessible à partir de N'IMPORTE QUELLE page de l'application ASP :

Welcome <%Response.Write(Session("username"))%>

La ligne ci-dessus renvoie : "Bienvenue Donald Duck".

Vous pouvez également stocker les préférences de l'utilisateur dans l'objet Session, puis accéder à cette préférence pour choisir la page à renvoyer à l'utilisateur.

L'exemple ci-dessous spécifie une version texte de la page si l'utilisateur a une faible résolution d'écran :

<%If Session("screenres")="low" Then%>
  This is the text version of the page
<%Else%>
  This is the multimedia version of the page
<%End If%>

Supprimer les variables de session

La collection Contents contient toutes les variables de session.

Il est possible de supprimer une variable de session avec la méthode Remove.

L'exemple ci-dessous supprime la variable de session "sale" si la valeur de la variable de session "age" est inférieure à 18 :

<%
If Session.Contents("age")<18 then
  Session.Contents.Remove("sale")
End If
%>

Pour supprimer toutes les variables d'une session, utilisez la méthode RemoveAll :

<%
Session.Contents.RemoveAll()
%>

Boucle dans la collection de contenu

La collection Contents contient toutes les variables de session. Vous pouvez parcourir la collection Contents pour voir ce qu'elle contient :

<%
Session("username")="Donald Duck"
Session("age")=50

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

Résultat:

username
age

Si vous ne connaissez pas le nombre d'éléments de la collection Contents, vous pouvez utiliser la propriété Count :

<%
dim i
dim j
j=Session.Contents.Count
Response.Write("Session variables: " & j)
For i=1 to j
  Response.Write(Session.Contents(i) & "<br>")
Next
%>

Résultat:

Session variables: 2
Donald Duck
50

Boucle dans la collection StaticObjects

Vous pouvez parcourir la collection StaticObjects pour voir les valeurs de tous les objets stockés dans l'objet Session :

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