Karrigell Documentation

Version 2.3.3 15 01 07

English

15. Sessions

Les sessions sont une façon pour le serveur de garder en mémoire des informations relatives à un utilisateur particulier pendant qu'il navigue de page en page

Supposons que vous soyez sur un site sur lequel vous avez trouvé deux CD que vous voudriez commander ; puis sur une autre page vous trouvez un livre. Ensuite on vous posera des questions sur votre adresse, on vous demandera d'écrire un message si c'est pour un cadeau, puis il y aura des questions sur votre numéro de carte bancaire. Après tout cela le site affichera une page récapitulant toute votre commande pour que vous confirmiez l'achat

Sans les sessions ceci serait difficile à réaliser ; il faudrait passer toutes les informations de page en page par des champs de formulaire cachés, et ce serait compliqué à implémenter

Avec les sessions tout devient simple ; l'utilisateur est identifié par un "identifiant de session" qui est envoyé avec chaque requête sous la forme d'un cookie. Cet identifiant correspond à un objet sur le serveur, objet à qui on peut ajouter des attributs ou de qui on peut en lire pendant toute la durée de la navigation de l'internaute

Avec Karrigell, sur chaque page dans laquelle vous voulez modifier une information de session ou y accéder, commencez par créer un objet session par :

sessionObj=Session()

Si vous êtes au début de la session, Karrigell génèrera un cookie appelé sessionId et le renverra au navigateur web. Pour les requêtes suivantes, le navigateur enverra automatiquement ce cookie et le serveur retrouvera l'objet associé

L'objet session est un objet Python ordinaire, on peut lui affecter des valeurs sous forme d'attributs :

sessionObj.nom="Jean Dupont"

Depuis un autre script on accède à cette valeur par :

nom=sessionObj.nom

Les objets session prennent en charge une méthode close(), qui a pour effet d'effacer l'information de session

En fait, vous n'êtes pas obligé de clore explicitement une session ; Karrigell s'assure qu'il n'y a jamais plus de 1000 sessions simultanées et efface les plus anciennes quand on arrive à la 1000ème

15.1 Exemple

Dans un fichier HTML, créez un formulaire et envoyez-le à un script PIH :

<h3>Qui êtes-vous ?</h3>
<form action="debutEssaiSession.pih">
Nom <input name="monnom">
<br>Prénom <input name="prenom">
<br><input type="submit" value="Ok">
</form>

Le script reçoit les données d'entrée via QUERY (ou les variables contenant les champs du formulaire), crée un objet session et sauvegarde nom et prenom comme attributs de cet objet :

<h3>Début de session</h3>
<%
sessionObj=Session()
sessionObj.nom=_monnom
sessionObj.prenom=_prenom
print sessionObj.nom
%>
<a href="suiteEssaiSession.pih">Suivant...</a>

Le script suivant est appelé sans chaîne de requête (query string), mais il retrouvera les informations via l'objet session :

<h3>L'essai de session continue</h3>
<%
session=Session()
print session.prenom
session.close()
%>

Du fait que le script a clos la session, si vous revenez à la page précédente avec le navigateur et que vous réessayez le lien Suivant... vous recevrez une superbe trace d'erreur Python vous informant que l'objet session n'a pas d'attribut prenom. Modifiez le script en enlevant ou en mettant en commentaire la ligne session.close() et voyez ce qu'il se passe