PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WEBDEV 2024 → Session expirée WebDev et relancer l'appli
Session expirée WebDev et relancer l'appli
Iniciado por Eric R., mar., 07 2005 8:34 PM - 5 respostas
Publicado em março, 07 2005 - 8:34 PM
Bonjour,

Je trouve qu'il y a un énooorme problème avec l'expiration des sessions
avec WebDev.

Passons sur le délai, je sais que l'on peut le régler ... mais une
session qui expire, l'application est renvoyée mais sans ses
paramètres.


Dans mon cas, c'est simple cela va changer de client concerné.
J'ai une appli générique et des paramètres pour accéder à un site
personnalisé. Donc quand il renvoie la session, c'est la ca, la cata,
la catastrophe ... oui madame, y'en a au moins une qui suit au fond :/

donc comment faire pour gérer cela intelligemment ?

y'a-t-il un moyen pour mémoriser cela au début pour le recup dans un
traitement de reconnexion ?
un cookie peut être. si param =0,vas voir s'il n'y a pas un petit
cookie qui traine pour voir le type de site qu'on visite ici ?

si vous avez déjà géré ce pb, merci de me remonter vos idées, codes,
conseil ... tout quoi !

--
Eric
Webmaster des Wtablettes
www.wtablettes.net
Publicado em março, 08 2005 - 11:46 AM
bonjour

j'ai eu le même pb, cela arrive quand l'utilisateur n'intervient pas pendant un certain temps sur le site. j'ai mis un timer qui au bout d'un certain temps apelle une page du site mais ne l' affiche pas.
sinon on peut considérer que si la session est fermée, alors il doit se reconnecter, mais ca peut être pénalisant et ca dépend de l'appli

nelly
Publicado em março, 08 2005 - 12:58 PM
Salut Eric,

c'est vrai que c'est un problème.
Je crois qu'on pourrait faire une WTablette là-dessus d'ailleurs.

Tout d'abord, comment WebDev gère les sessions ??
Une session est ouverte chaque fois que quelqu'un atteind appel le site par son adresse de base.
Si on essaye de revenir directement sur une page (le résultat d'une recherche par ex) en ayant sauvegarder son adresse,
on obtient une jolie page disant que la session n'existe plus (une fois le timeout dépassé bien entendu). C'est donc
très différent d'une recherche sur Google (pour ne citer que lui). Si on veut obtenir le même comportement que sur
Google, il y a les pages AWP (sans contexte par définition).
Le contexte sert cependant beaucoup (c'est pour cela, que c'est le 1er mode disponible sous WebDev) on s'en est tous
rendu compte, pour conserver une multitude de variables, les accès aux données, l'état des pages, etc...

Le moteur de WebDev remet à zero son timer à chaque fois qu'une page est affichée.
Partant de ce constat, il suffit de rafraichir une page pour que le contexte soit maintenu.
Je déconseille perso de rafraichir une page dans une frame caché (pour éviter d'avoir à mettre le code sur toutes les
pages) car, cette dernière serait rafraichit de manière constante (toutes les x minutes) et par conséquent en décalage
avec les actions de l'utilisateur. (cela entrainerait par ailleurs une perte de focus sur la page affichée. C'est
gérable mais bon)
Je pense qu'il est préférable de mettre le code sur toutes les pages (c'est pas grand chose) et dans le cas de sites
avec frames, sur la frame qui est rafraichit le plus souvent.

Dans la page, créer un bouton caché avec envoi de la valeur au serveur (submit). Appellons le BTNREFRESH.
Ensuite, créer une procédure navigateur
AutoReload()
Execute("BTNREFRESH..CLI")
---------------------------------

Pour finir, il suffit de mettre le code suivant dans le onload de la page :
Timer("AutoReload", 60000) // 60000 = 10min (10min*60s*100ms) si vous voulez que la page se recharge toutes les 10min
automatiquement (il faut bien sûr avoir un timeout sensiblement plus important : 11min par ex.)

Voilà, c'est tout !

L'avantage du bouton, c'est de poster les valeurs de champs remplis par l'utilisateur. Donc au rechargement de la page,
rien n'est perdu mais l'action du bouton Valider n'est pas executer puisque l'utilisateur n'a pas encore cliqué dessus.

Concernant la fonction FinProgramme(), elle est utilisable sur un bouton "LogOff" : Dans ce cas, la session en cours est
fermé et il faut AVANT l'appel à cette fonction faire un PageAffiche(PageStatique) et dans cette page, dans le onload
faire un SiteDynamiqueAffiche...
Pour utiliser la fonction FinProgramme(), sur la fermeture ou le changement d'adresse du navigateur (appel d'un Favoris,
etc.) il est nécessaire d'utiliser une popup et de nos jours les navigateurs bloquent les popups.... (La fonction
FinProgramme() a besoin pour être effective d'envoyée une page à l'internaute.) donc, à moins d'être dans un Intranet
(où l'on peut maitriser cela) ce n'est pas utilisable.

J'espère que ça va aider ;-)

Bon dev,

Olivier

Eric a écrit :
Bonjour,

Je trouve qu'il y a un énooorme problème avec l'expiration des sessions
avec WebDev.

Passons sur le délai, je sais que l'on peut le régler ... mais une
session qui expire, l'application est renvoyée mais sans ses
paramètres.


Dans mon cas, c'est simple cela va changer de client concerné.
J'ai une appli générique et des paramètres pour accéder à un site
personnalisé. Donc quand il renvoie la session, c'est la ca, la cata,
la catastrophe ... oui madame, y'en a au moins une qui suit au fond :/

donc comment faire pour gérer cela intelligemment ?

y'a-t-il un moyen pour mémoriser cela au début pour le recup dans un
traitement de reconnexion ?
un cookie peut être. si param =0,vas voir s'il n'y a pas un petit
cookie qui traine pour voir le type de site qu'on visite ici ?

si vous avez déjà géré ce pb, merci de me remonter vos idées, codes,
conseil ... tout quoi !

--
Eric
Webmaster des Wtablettes
www.wtablettes.net
Publicado em março, 08 2005 - 1:11 PM
nelly a exposé le 08/03/2005 :
bonjour

j'ai eu le même pb, cela arrive quand l'utilisateur n'intervient pas pendant
un certain temps sur le site. j'ai mis un timer qui au bout d'un certain
temps apelle une page du site mais ne l' affiche pas.


c'est une idée. Peux tu l'as développer svp.

sinon on peut considérer que si la session est fermée, alors il doit se
reconnecter, mais ca peut être pénalisant et ca dépend de l'appli

nelly


Oui bien sûr, je comprends cette notion de time out mais comment la
gérer ???

je croyais avoir trouver la parade.Creusant mon idée de cookie.

Je rentre dans le site, en code projet je lit un cookie "LastParam"
si monparam =0 alors monparam=lastparam

si après ça monparam=0 alors finprogramme

sinon :
j"ecris mon cookie pour stocker monparam (pour la prochaine fois)
je traite selon mon param

Impeccable la première fois. Cela se relance avec le bon paramètre.
Mais si je ne relance pas le navigateur, j'ai l'expiration de session
sans le système de relance. Et donc un bon gros plantage sans espoir de
reprises.

?????

Pourquoi cette différence de traitement ?
Cette gestion des sessions est vraiment un gros point noir WebDev !!

NB : toutes mes excuses aux wtablettonautes qui se sont fait jeter sur
les wtablettes ce matin, car j'avais positionné le timeout à 3mn pour
faire ces tests.

--
Eric
Webmaster des Wtablettes
www.wtablettes.net
Publicado em março, 08 2005 - 3:56 PM
le pb des cookies est que certains navigateurs les bloquent !
la solution du reload marche aussi avec un timer initialisé au chargement de la page avec une durée légèrement inférieure à celle des sessions !
par contre si la déconnexion est parceque l'utilisateur doit rester logntemps sur une page, ce que j'ai fait c'est une table avec les paramètres de sessions et en appelant la page de reconnexion si la session est tombée on retombe sur les coordonnees de l'utilisateur il suffit de propager la variable de session !

a voir ce qui est le mieux suivant le projet !
Publicado em março, 08 2005 - 7:00 PM
nelly a écrit :
le pb des cookies est que certains navigateurs les bloquent !
la solution du reload marche aussi avec un timer initialisé au chargement de
la page avec une durée légèrement inférieure à celle des sessions ! par
contre si la déconnexion est parceque l'utilisateur doit rester logntemps sur
une page, ce que j'ai fait c'est une table avec les paramètres de sessions et
en appelant la page de reconnexion si la session est tombée on retombe sur
les coordonnees de l'utilisateur il suffit de propager la variable de session
!

a voir ce qui est le mieux suivant le projet !


j'ai suivi la technique d'Olivier, ça marche bien.
En plus il nous concocte un superchamps pour ça et vous aurez bientôt
une belle wtablette toute fraîche.

sans dec, vous êtes gatés en ce moment :-)

--
Eric
Webmaster des Wtablettes
www.wtablettes.net