/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Session_OnEnd spørgsmål
Fra : Thomas Due


Dato : 05-02-03 15:00

Hejsa,

Jeg har konstrueret et website som bl.a. rummer en login funktion. Af
forskellige årsager ønsker jeg ikke at brugere kan logge ind mere end et
vist antal gange samtidigt. F.eks. er brugeren "thomas" sat til at kunne
logge ind 5 gange. Dette styrer jeg så ved at tælle en variabel i databasen
op med en, når han logger ind og ned med en, når han logger ud.
Hvis brugeren er logget ind det maksimalt tilladte antal gange, kan han ikke
logge ind før mindst en af de andre er logget af.

Jeg har placeret den kode der tæller ned ved udlogning i min Session_OnEnd
hændelse, efter den opfattelse at denne bliver kørt, når brugeren forlader
web-sitet i forbindelse med at han skifter til et anden website, eller
lukker browseren, ud over selvfølgelig når sessionsobjektet nedlægges.

Det viser sig så at det tilsyneladende ikke er tilfældet. Kan det have sin
rigtighed at Session_OnEnd ikke bliver kørt hvis browseren lukkes inden
brugeren er logget ud?

Ligeledes, kan det passe at hændelsen heller ikke bliver kørt hvis brugeren
skifter til et andet website uden at logge ud?

Hvis svaret er ja til begge spørgsmål, hvad skal jeg så gøre for at sikre at
variablen tælles ned korrekt?

Under hvilke omstændigheder bliver Session_OnEnd helt nøjagtigt afviklet?

På forhånd tak.

--
Thomas Due
Software Developer
Scanvaegt Nordic A/S



 
 
Chrisser (05-02-2003)
Kommentar
Fra : Chrisser


Dato : 05-02-03 15:22

"Thomas Due" <t.due@scanvaegt_remove.dk> skrev i en meddelelse
news:b1r5dl$dls$1@sunsite.dk...
> Det viser sig så at det tilsyneladende ikke er tilfældet.
> Kan det have sin rigtighed at Session_OnEnd ikke bliver
> kørt hvis browseren lukkes inden brugeren er logget ud?
>
> Ligeledes, kan det passe at hændelsen heller ikke bliver kørt hvis
> brugeren skifter til et andet website uden at logge ud?

Ja og nej.
Jeg mener det er sådan at hvis en bruger undlader at logge ud, men
forlader siden eller lukker browseren, så "lever" sessionen intil
session.Timeout rammes.
Den står normalt til 20 minutter, og man kan da også opleve at
hvis man kommer til at lukke sin browser ned, eller forbindelsen
mistes så kan man ofte godt koble op igen og stadig være logget ind.

Det ved jeg så ikke om du kan bruge til noget

Men måske du så kan lave noget der kører en session.Abandon
hvis en bruger forlader sitet uden at logge af ?


CHrisser



Jimmy (05-02-2003)
Kommentar
Fra : Jimmy


Dato : 05-02-03 15:31


"Thomas Due" <t.due@scanvaegt_remove.dk> wrote in message
news:b1r5dl$dls$1@sunsite.dk...
> Hejsa,
>
> Kan det have sin
> rigtighed at Session_OnEnd ikke bliver kørt hvis browseren lukkes inden
> brugeren er logget ud?

Ja - det er min klare erfaring.
Dette har jeg desuden læst på adskillige hjemmesider og i ASP Unleashed 2.0.

Jeg regner metoden for upålidelig og ville aldrig anvende den, men
programmerer mig ud af et evt. problem på en anden måde.

mvh
Jimmy



Jakob Andersen (05-02-2003)
Kommentar
Fra : Jakob Andersen


Dato : 05-02-03 15:52

"Jimmy" <nyhedsgruppe@get3_erstat_3_med_2.dk> wrote
[Session_Onend]
> Jeg regner metoden for upålidelig og ville aldrig anvende den, men
> programmerer mig ud af et evt. problem på en anden måde.

Ovenstående påstand bliver ofte fremført af mange forskellige mennesker, men
jeg savner noget dokumentation.

Det er rigtigt at der på IIS4 kan være nogle problemer hvor man lige skal
dykke lidt i registreringsdatabasen for at få sat en korrekt session
timeout, men på IIS5 savner jeg stadig nogle argumenter for _hvorfor_
Session_OnEnd af så mange regnes for upålidelig.

--
Jakob Andersen



Jimmy (06-02-2003)
Kommentar
Fra : Jimmy


Dato : 06-02-03 08:32


"Jakob Andersen" <jakob@effectus.dk> wrote in message
news:b1r8hu$95l$1@news.cybercity.dk...
> "Jimmy" <nyhedsgruppe@get3_erstat_3_med_2.dk> wrote
> [Session_Onend]
> > Jeg regner metoden for upålidelig og ville aldrig anvende den, men
> > programmerer mig ud af et evt. problem på en anden måde.
>
> Ovenstående påstand bliver ofte fremført af mange forskellige mennesker,
men
> jeg savner noget dokumentation.


Jeg trækker mit udsagn om at den er upålidelig tilbage.
Det bundede i en manglende forståelse for Session_OnEnd.

Pointen i nedenstående er, at eventen *ikke* afvikles når en bruger lukker
sin browser.
Den afvikles bl.a. når sessionen timer ud eller Session.Abandon køres.



Fra asp101:

"Sessions DO NOT end when a user closes their browser. There is no
communication with the server when a browser is closed so there is no way
the server can know to end the session. The same is true when you leave the
site for another. Again no communication takes place between your browser
and the site you're leaving so the server never knows you've left."

http://www.asp101.com/articles/john/sessionsend/default.asp



Fra Microsoft:

"The Session_OnEnd event occurs when a session is abandoned or times out. "

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iisref/html
/psdk/asp/glob2y90.asp


Fra Microsoft:

"Session_OnEnd is called either when the session times out or when there is
a script call that tells Active Server Pages to abandon the session, such as
when a user clicks Log Off in Microsoft Outlook Web Access."


http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cdo/html/_o
lemsg_the_session_onend_function.asp


Fra Learnasp:

"Fact #1: When a browser window closes, the session DOES NOT end."

http://www.learnasp.com/learn/sessionoverview.asp



Mvh
Jimmy




Jakob Andersen (05-02-2003)
Kommentar
Fra : Jakob Andersen


Dato : 05-02-03 15:55

"Thomas Due" <t.due@scanvaegt_remove.dk> wrote
> Det viser sig så at det tilsyneladende ikke er tilfældet. Kan det have sin
> rigtighed at Session_OnEnd ikke bliver kørt hvis browseren lukkes inden
> brugeren er logget ud?

Den bliver kørt når Sessionen timer ud jvf. indstillingerne i IIS management
console eller evt. sat vha ASP (Dog er der nogle problemer med IIS4 hvor man
efter sigende skal sætte værdien manuelt i registreringsdatabasen).

Dog kan jeg godt se et andet problem i din metode til tjek om simultan
logins. En bruger kan jo sagtens have flere browservinduer åbne der kører på
samme session. Og sidst men ikke mindst er der svjh ikke adgang til
sessionværdier men kun sessionid'et i Session_OnEnd

--
Jakob Andersen



Thomas Due (06-02-2003)
Kommentar
Fra : Thomas Due


Dato : 06-02-03 08:21

Jakob Andersen <jakob@effectus.dk> wrote:
> Dog kan jeg godt se et andet problem i din metode til tjek om simultan
> logins. En bruger kan jo sagtens have flere browservinduer åbne der
> kører på samme session.

Okay, det har du jo sådan set ret i. Har du evt. et andet forslag så?

> Og sidst men ikke mindst er der svjh ikke
> adgang til sessionværdier men kun sessionid'et i Session_OnEnd

Det er sådan set ikke et problem, da værdien ligger i databasen, og
Session_OnEnd kører en metode i et COM objekt til at registrere at sessionen
er slut. Mht. flere vinduer,

--
Thomas Due
Software Developer
Scanvaegt Nordic A/S



Jakob Andersen (06-02-2003)
Kommentar
Fra : Jakob Andersen


Dato : 06-02-03 08:30

"Thomas Due" <t.due@scanvaegt_remove.dk> wrote
> Okay, det har du jo sådan set ret i. Har du evt. et andet forslag så?

Den tror jeg du bliver nødt til at klare på klienten. Spørg evt. i
news:dk.edb.internet.webdesign.clientside , det kan være de har nogle idéer.

--
Jakob Andersen



Jesper Nielsen (06-02-2003)
Kommentar
Fra : Jesper Nielsen


Dato : 06-02-03 09:18

> Det er sådan set ikke et problem, da værdien ligger i databasen, og
> Session_OnEnd kører en metode i et COM objekt til at registrere at
sessionen
> er slut. Mht. flere vinduer,

Du skal passe på med at anvende SessionID som unique identifier.
SessionID'er er unikke, så længe man holder serveren kørende - men
genstarter man sin IIS, kan man godt risikere, at SessionID'er bliver
genbrugt.

--
Mvh. Jesper



Jimmy (06-02-2003)
Kommentar
Fra : Jimmy


Dato : 06-02-03 09:30



--
--
Mvh
Jimmy Jeppesen
"Jesper Nielsen" <jn@nielsenit.dk> wrote in message
news:2To0a.54718$Hl6.6943852@news010.worldonline.dk...
> > Det er sådan set ikke et problem, da værdien ligger i databasen, og
> > Session_OnEnd kører en metode i et COM objekt til at registrere at
> sessionen
> > er slut. Mht. flere vinduer,
>
> Du skal passe på med at anvende SessionID som unique identifier.
> SessionID'er er unikke, så længe man holder serveren kørende - men
> genstarter man sin IIS, kan man godt risikere, at SessionID'er bliver
> genbrugt.


Ifølge Learnasp:

"Fact #4: Session ids are not guaranteed to be different anytime a new
session is generated. If there are 1,000 sessions there will be 1,000 unique
session ids. But if 200 people loose session (due to timeout or explicit
..abandon) and 150 new sessions are begun ASP may and will certainly use the
same session IDs it was using earlier. "

http://www.learnasp.com/learn/sessionoverview.asp

Mvh
Jimmy



Jesper Nielsen (07-02-2003)
Kommentar
Fra : Jesper Nielsen


Dato : 07-02-03 06:39

> Ifølge Learnasp:
>
> "Fact #4: Session ids are not guaranteed to be different anytime a new
> session is generated. If there are 1,000 sessions there will be 1,000
unique
> session ids. But if 200 people loose session (due to timeout or explicit
> .abandon) and 150 new sessions are begun ASP may and will certainly use
the
> same session IDs it was using earlier. "

Okay - jeg var ellers overbevist om, at IIS kun benbrugte dem, hvis man
genstartede serveren/IIS.

--
Mvh. Jesper



Søg
Reklame
Statistik
Spørgsmål : 177551
Tips : 31968
Nyheder : 719565
Indlæg : 6408836
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste