Manuel §8.4    

Cookies

Comme pour tout serveur http, la seule possibilité de maintien d'un contexte exécution pour SWS est l'utilisation de cookies.

SWS définit la fonction SetCookies qui permet d'associer une information à un identificateur de cookie.

SetCookie( Identificateur, Valeur, Expiration): Statut

Identificateur est le nom du cookie (chaîne de caractère non accentué); Valeur est l'expression qui sera enregistrée, en général il s'agit d'une chaîne de caractère car la transmission au client et retour est au format texte; Expiration est la date à partir de laquelle le client n'a plus besoin de conserver ce cookie.

Statut est vrai si la fonction s'est bien exécutée.

Par exemple

SetCookie( "Contexte", Now():";Journée",  Now()+3600);

SWS transmet lors de l'envoi de la réponse HTTP au fureteur une demande de création de cookies identifiée par Contexte.

Set-Cookie: Contexte=String "2003//01//20 10:28:42; Journ&eacutee"; expires= Thursday, 20-Jan-03 10:28:42 GMT

Notez que Sisal gère automatiquement le passage d'une expression Sisal à une expression compatible avec http en convertissant les caractères accentués et en rajoutant des guillemets et des slaches la ou il faut.

Lorsque le fureteur du client demandera une nouvelle page, il transmettra dans la requête HTML en paramètres ces cookies; ces informations sont alors disponibles sous Sisal à l'aide de la fonction GetCookie [1] .

GetCookie( Identificateur, Variable): statut

Identificateur est une chaîne de caractère contenant le nom du cookie, Variable est la variable dans laquelle Sisal rangera le cookie; Si le cookie existe et que la Variable a été mis à jour, statut vaut 1.

La fonction CookiesList permet d'obtenir la liste des cookies reçus. C ’est une chaîne de caractère dont chaque nom est séparé par une tabulation.

CookiesList() : Liste

L'exemple suivant permet de retrouver la date et la période enregistrée dans le cookie "Contexte":

If GetCookie( "Contexte", contexte) then begin
ParseStr( contexte, ";", 0, Date);
ParseStr( contexte, ";", 1, Période);
...
end

[1] On peut aussi inclure le nom d'un cookie en début d'un bloc Sisal, cela permet de générer dans le buffer de sortie la valeur de cookie, par exemple: <?sisal Style ?> générera par exemple "MonStyleAMoi".