Session (gb.web)

Cette classe est utilisée pour gérer les sessions.

Cette classe est statique.

Cette classe se comporte comme un tableau statique en lecture / écriture.

Propriétés statiques
CookiePath  
Id   Retourne l'identifiant de la session.
Keys  
Modified   Retourne ou définit si une session a été modifiée, et doit donc être sauvegardée sur le disque.
Path   Return the session file path.
Prefix   Retourne ou définit le préfixe identifiant de session.
Size   Return the session file size.
Timeout   Retourne ou définit la durée maximale d'une session en secondes.
Type   Return or set the session type.
Unique   Retourne ou établit si la session doit être unique.

Méthodes statiques
Abandon   Abandonne la session actuelle.
Exist  
Load   Recharge la session depuis le disque.
Save   Sauvegarde la session sur le disque.

Qu’est-ce qu’une session ?

Une session vous permet de conserver la valeur des variables entre deux requêtes HTTP.

Une session est un conteneur semblable à une collection identifié par une chaîne unique retournée par la propriété Session.Id.

Cet identifiant prend la forme suivante : <PREFIX>:<KEY>.

  • <PREFIX> est le préfixe donné par la propriété Session.Prefix, ou l’adresse du client IP si aucun préfixe n’a été défini.

  • <KEY> est un nombre hexadécimal aléatoire de 24 chiffres.

Exemple: 10.254.3.151:CFA76E086C00E18CF07A8EC

L'identifiant de session est enregistré dans un cookie nommé 'SESSION' dans le navigateur du client.

Enregistrement de valeurs dans la session

La session peut enregistrer des valeurs associées à des clés de chaînes. Vous pouvez enregistrer autant de valeurs que vous voulez, mais il y a des restrictions : seuls les types de donnée natives, les tableaux, et les collections peuvent être utilisés.

Le contenu de la session est enregistré dans le fichier suivant :
"/tmp/gambas" &/ System.User.Id &/ "session" &/ Session.Id

La session est automatiquement restaurée au lancement du programme.

Création d'une session

Une nouvelle session est automatiquement créée dès que vous enregistrez une variable de session, et qu'aucune session actuelle existe (c.a.d. quand Session.Id est NULL).

Si vous appelez Response.Begin trop tôt, la session ne peut pas être créée, du fait que les entêtes HTTP ont déjà été envoyées. Vous avez alors deux solutions :
  • Appeler Response.Begin une fois assuré que la session a été créée.

  • Mettre Response.Buffered à TRUE, de manière à ce que les entêtes soient envoyées quand vous appelez Response.End.

Destruction d'une session

Vous pouvez abandonner une session en utilisant la méthode Abandon.