Avatar billede hingebjerg Nybegynder
08. juli 2005 - 14:08 Der er 12 kommentarer og
1 løsning

Problem med "online brugere" script (Global.asa)

Hej hej.

Jeg har fundet et scripte (Her på E) som viser hvilke brugere der er online. Det gør den ved at læse session("username"). problemet er at brugere ikke bliver fjrnet fra listen når de forlader siden..?
Her er scriptet (global.asa):
<SCRIPT LANGUAGE="VBScript" RUNAT="Server">


' timeout_sek = 2


Sub Application_OnStart
    ' Nulstiller antallet af brugere når applikationen (serveren) startes
   
    Application.Lock
    Application("OnlineUsers") = ","
    Application.UnLock
   
   
    Application("ActiveUsers") = 0
End Sub

Sub Application_OnEnd
    ' Skriv kode som skal køres når applikationen (serveren) stoppes
End Sub

Sub Session_OnStart
    ' Forøger antallet af brugere med 1, når en session startes
    Application.Lock
        Application("ActiveUsers") = Application("ActiveUsers") + 1
    Application.UnLock
End Sub

Sub Session_OnEnd
    ' Reducer antallet af brugere med 1, når en session afsluttes
   
If Len(Session("username")) > 0 Then
    Application.Lock
    Application("OnlineUsers") = Replace(Application("OnlineUsers"), Session("username") & ",", "")
    Application.UnLock
End If
   
   
    Application.Lock
        Application("ActiveUsers") = Application("ActiveUsers") - 1
    Application.UnLock
End Sub
</SCRIPT>

jeg skulle mene at det er heri problemet er....

HH
Avatar billede busschou Praktikant
08. juli 2005 - 14:14 #1
er problemet ikke blot det generelle at ens session først slutter som standard 20min efter man har lukket siden, med mindre man koder en session abandon?
Session_OnEnd kaldes jo først når sessionen timer ud
Avatar billede busschou Praktikant
08. juli 2005 - 14:16 #2
så med andre ord burde du gerne se at folk er logget ud efter tyve minutter :o), for det ser ok ud for mig ellers
Avatar billede hingebjerg Nybegynder
08. juli 2005 - 14:17 #3
okay, men hvor sætter jeg den session.abandon ind??
Avatar billede softspot Forsker
08. juli 2005 - 14:41 #4
Internettets afkoblede natur gør det lidt svært at bestemme hvornår en bruger ikke er på længere (hvis altså man ikke kan vente til session løber ud).

Jeg kunne foreslå at du selv flikkede et koncept sammen, hvor du holdt styr på hvornår en bruger sidst kontaktede serveren for at opdatere data og så selv definerer hvor lang tid der skal gå (f.eks. 5 min), før brugeren betragtes som offline (uden denne dog rent faktisk mister sin session efter 5 min). Der skelnes altså mellem et fysisk session-timeout og et logisk (det koncept jeg skitserer her). Dette indbærer at du skal have en liste, som opdateres hver gang en bruger vender tilbage til serveren. Denne liste kunne f.eks. bestå af et tidspunkt og brugerid. Listen benyttes så til at generere oversigten over hvilke brugere der er aktive (hyppigt nok til at fremgå af listen om ikke andet)...
Avatar billede hingebjerg Nybegynder
08. juli 2005 - 16:04 #5
Busschou hvor sætter jeg den abandon ind henne?? i Global.asa eller på mine sider?
Avatar billede busschou Praktikant
08. juli 2005 - 23:08 #6
session.abandon vil man normalt sætte på en side hvor man har en logud funktion. På den måde forsvinder sessionen og der tælles en ned i global.asa
Der hvor man ikke kan styre det er når en buger lukker sin browser, for der kan man ikke nå at lave en abandon, og derfor vil der først blive talt en ned efter 20min som standard.
Hvis du på nuværende tidspunkt _kun_ har ovenstående kode og ellers ikke piller ved sessions, så vil alle brugere først blive registreret som logget ud tyve min efter de har forladt siden
Avatar billede hingebjerg Nybegynder
09. juli 2005 - 00:53 #7
ja okay. Jeg har fået .abandon sat ind når brugeren logger ud.
Men ja, så er problemet når brugeren bare lukker Browseren...
Findes der et script der kan håndtere det?? jeg har spekuleret i noget JavaScript, men kan ikke rigtigt se hvordan man lige skulle kunne lave et sådan script. Måske du kender til noget??
Avatar billede busschou Praktikant
09. juli 2005 - 04:05 #8
Jeg har selv engang ledt efter det, og det eneste jeg gang på gang har set er at det ikke kan lade sig gøre
Du kan i javascript køre en function på "onUnload" og specielt i IE "onBeforeUnload"
Men jeg har ikke set nogen som har implementeret en brugbar løsning
Avatar billede busschou Praktikant
09. juli 2005 - 04:06 #9
til det skulle jeg måske tilføje et "desværre"
Avatar billede busschou Praktikant
27. juli 2005 - 15:53 #10
hingebjerg >> kommet videre ?
Avatar billede hingebjerg Nybegynder
27. juli 2005 - 19:32 #11
ja, jeg har det til at virke som det skal, eller skal jeg skrive som det kan :) hehe.
jeg har sat min session timeout til 5 min, så hvis folk lukker browseren går der ik så lang tid inden de ikke vises som online.
Avatar billede busschou Praktikant
27. juli 2005 - 21:34 #12
okey jamen du får da gerne et svar fra mig så du kan lukke så ;o)
Avatar billede hingebjerg Nybegynder
27. juli 2005 - 23:38 #13
ja, kanon da. Troede egentlig den var lukket den her. :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester