OVH Cloud OVH Cloud

global.asax : Session_OnEnd

3 réponses
Avatar
Abdel
Bonjour,

Voici mon soucis (4 jours de recherche sans succès HELP)!:

>A la connexion d'un user je met l'identifiant de sa session dans une variable d'application:
SUB Session_OnStart
Application ("lstUsers") = Application ("lstUsers") + session.sessionid + ";"
END SUB

>Dans ma fenêtre de login j'ajoute le nom de cette utilisateur après l'identifiant de sa session:
Application.Lock()
Application("lstUsers") = Replace(Application("lstUsers"),
Session.SessionID, Session.SessionID & Session("stUser").PadLeft(25))
Application.UnLock()

>En fin de session j'aimerais SUPPRIMER cet user de ma variable de session.
Voici ce que j'ai essayé:
>Dans le global.asax:
SUB Session_OnEnd
dim i, l
i=instr(Application ("lstUsers"),session.sessionId)
if i>0 then
l=len(session.sessionId)+25 '25 est la longueur du nom d'utilisateur
connecté
Application ("lstUsers") = mid(Application ("lstUsers"),1,i-1) +
mid(Application ("lstUsers"),i+l+2)
end if
END SUB

>J'ai aussi essayé de le faire dans le unload de ma frame d'entête (qui est toujours visible):
<SCRIPT language="vbscript">
sub Fin()
dim i, l
i=InStr(Application ("lstUsers"),session.sessionId)
if i>0 then
l=len(session.sessionId)+25 '25 est la longueur du nom d'utilisateur
connecté
Application ("lstUsers") = mid(Application ("lstUsers"),1,i-1) +
mid(Application ("lstUsers"),i+l+2)
end if
end sub
</SCRIPT>
</HEAD>
<BODY MS_POSITIONING="GridLayout" onUnload="Fin()">

MERCI D'AVANCE!

3 réponses

Avatar
Francois Muller
Bonjour

"Abdel" a écrit dans le message de news:
B624B407-3AC0-4DBF-8BE2-
Voici mon soucis (4 jours de recherche sans succès HELP)!:

A la connexion d'un user je met l'identifiant de sa session dans une
variable d'application:


SUB Session_OnStart
Application ("lstUsers") = Application ("lstUsers") + session.sessionid +
";"
END SUB



je ne comprends pas bien pourquoi tu utillises quelque chose d'aussi "tordu"
et peu élégant (désolé, je ne trouve pas d'autre terme)pour conserver ce qui
semble être une liste d'utilisateurs connectés.
Ne serait il pas plus simple de créer une classe utilisateur et de stocker
les instances de cette classe dans une hashtable (ou autre) elle même
référencée dans une variable application ?

F.
Avatar
Francois Muller
Suite de mon message précédent :

"Abdel" a écrit dans le message de news:

Bonjour,

Voici mon soucis (4 jours de recherche sans succès HELP)!:



Par exemple, quelque chose comme cela me semble moins "cradingue" : (bien
sur il s'agit d'un exemple basique : enrichit comme tu veux la classe
UserConnected)

class UserConnected
{
string sessionID;
UserConnected(string _sessionID)
{
sessionID = _sessionID;
}
}
protected void Application_Start(Object sender, EventArgs e)

{

Hashtable UserList = new Hashtable ();

}


protected void Session_Start(Object sender, EventArgs e)

{

UserConnected newUser = new UserConnected (Session.SessionID);

UserList.Add(Session.SessionID, newUser);

}

protected void Session_End(Object sender, EventArgs e)

{

UserList.Remove(Session.SessionID);

}
Avatar
Francois Muller
"Francois Muller" a écrit
dans le message de news:



Quelque erreurs se sont glisées dans mon exemple, correction :

protected void Application_Start(Object sender, EventArgs e)

{

Hashtable UserList = new Hashtable ();
Application("UserList") = UserList;

}


protected void Session_Start(Object sender, EventArgs e)

{

UserConnected newUser = new UserConnected (Session.SessionID);
HashTable UserList = Application("UserList");
UserList.Add(Session.SessionID, newUser);

}

protected void Session_End(Object sender, EventArgs e)

{
HashTable UserList = Application("UserList");
UserList.Remove(Session.SessionID);
}