Avatar billede gatez Nybegynder
01. juni 2003 - 19:51 Der er 27 kommentarer og
1 løsning

Problemmer med global.asa

Hejsa...
Jeg sidder og arbejder med et script der skal vise hvor mange online bruger der er på min side... Altså kun dem der er logget ind.

Jeg har læst hvordan man laver scriptet på adressen:
http://activedeveloper.dk/julekalender/julegaver/whoson.asp

Men nu mangler jeg kun 1 ting som ikke er vist her på siden... Det er når en bruger logger af så skal den fjerne brugeren fra onlinelisten men hvordan ?
Avatar billede medions Nybegynder
01. juni 2003 - 19:52 #1
Dette sker automatisk... En Session() varer i 20 min. som default!

//>Rune
Avatar billede gatez Nybegynder
01. juni 2003 - 19:55 #2
Ja men hvis nu brugeren kun er online i 2 min. så står han som online i 20 min. og det går jeg ikke :-)
Avatar billede gatez Nybegynder
01. juni 2003 - 19:56 #3
Sådan her tilføjer jeg en bruger til Online Listen i global.asa når en bruger logger ind.

Sub AddOnlineUser()
    Application.Lock
    Application("OnlineUsers") = Application("Onlineusers") & Session("brugernavn") & ","
    Application.UnLock
End Sub

Men hvordan fjerner jeg brugeren igen når han logger ud ?
Avatar billede medions Nybegynder
01. juni 2003 - 19:56 #4
Well, sådan er det, der er der vidst ik' andet du kan gøre ved der!

//>Rune
Avatar billede gatez Nybegynder
01. juni 2003 - 20:00 #5
Jo der er en mulighed det ved jeg...
Hvis du kigger godt efter på:
http://activedeveloper.dk/julekalender/julegaver/whoson.asp
Så beskriver han en kode som kan gøre det. Men han har bare glemt at skrive koden...
Avatar billede eagleeye Praktikant
01. juni 2003 - 21:32 #6
Så vidt jeg kan se ud fra linket er der ikke noget han ikke viser koden for?
Avatar billede gatez Nybegynder
01. juni 2003 - 21:38 #7
Hey eagleeye længe siden :-)

Mit problem er det at når en bruger logger ind vises han som online på onlinelisten og det bliver han ved med i 24 timer tror jeg...

Her kan du se min kode i global.asa så kan du se om du har nogle idé... Jeg har selv prøvet med "Sub DelOnlineUser()" men det virker ikke...

<script language=VBScript runat=Server>
Sub Application_OnStart
Application.Lock
Application("OnlineUsers") = ","
Application.UnLock
End Sub

Sub Session_OnEnd

If Len(Session("brugernavn")) > 0 Then
    Application.Lock
    Application("OnlineUsers") = Replace(Application("OnlineUsers"), Session("brugernavn") & ",", "")
    Application.UnLock
End If

End Sub


' --- procedure til at tilføje en online bruger ---
Sub AddOnlineUser()
    Application.Lock
    Application("OnlineUsers") = Application("Onlineusers") & Session("brugernavn") & ","
    Application.UnLock
End Sub


' --- funktion som retunerer antallet af online brugere ---
Function CountOnLineUsers()
    Dim arrUsers
    ' --- lav et array med online brugere ---
    arrUsers = Split(Application("Onlineusers"), ",")
    ' --- antallet af online brugere er altid størrelsen på arrayet -1 ---
    CountOnLineUsers = UBound(arrUsers) - 1
End Function

' --- procedure til at udskrive online brugere ---
Sub WriteOnLineUsers()
    Dim arrUsers
    Dim n
    ' --- lav et array med online brugere ---
    arrUsers = Split(Application("Onlineusers"), ",")
    ' --- udskriv liste ---
    For n = 1 To UBound(arrUsers) -1
        Response.Write(arrUsers(n) & "<br>")
    Next
End Sub

Sub DelOnlineUser()
    Application.Lock
    Application("arrUsers") = Application("arrUsers") -1
    Application.UnLock
End Sub

</script>
Avatar billede gatez Nybegynder
01. juni 2003 - 21:43 #8
Når en bruger logger ind kalder jeg "Sub AddOnlineUser()" den tilføjer brugerens brugernavn til online listen via global.asa så må man da også kunne fjerne brugeren brugernavn fra listen igen når han logger ud... Tror du ik ?
Avatar billede eagleeye Praktikant
01. juni 2003 - 21:44 #9
Hvis du vil slette online listen så skal DelOnlineUser() se sådan ud:

Sub DelOnlineUser()
    Application.Lock
    Application("Onlineusers") = ","
    Application.UnLock
End Sub
Avatar billede gatez Nybegynder
01. juni 2003 - 21:46 #10
Jamen sletter jeg så ikke alle online bruger ? Den skal helst kun slette den bruger som logger ud altså: Session("brugernavn")
Avatar billede eagleeye Praktikant
01. juni 2003 - 21:46 #11
Session_OnEnd bliver kaldt når en bruger timer ud. Spørgsmålet er så om Session("brugernavn") er væk fordi session er timet ud.
Avatar billede eagleeye Praktikant
01. juni 2003 - 21:47 #12
Jo ;) den sletter alle brugerne.
Avatar billede eagleeye Praktikant
01. juni 2003 - 21:49 #13
Det er i denne del/function en brugers brugernavn fjernes:


Sub Session_OnEnd

If Len(Session("brugernavn")) > 0 Then
    Application.Lock
    Application("OnlineUsers") = Replace(Application("OnlineUsers"), Session("brugernavn") & ",", "")
    Application.UnLock
End If

End Sub
Avatar billede gatez Nybegynder
01. juni 2003 - 21:50 #14
Hvis jeg logger ind nu... Så viser den mig som online... Hvis jeg logger ud og logger ind igen så viser den mig som online 2 gange osv... Det er det jeg helst vil ungå hvis man kan...
Avatar billede eagleeye Praktikant
01. juni 2003 - 21:50 #15
Hvis du vil lave en log-out function altså som den på eksperten som hedder "Log ud" så skal koden bland andet være, dette så brugernanvet fjernes.:


If Len(Session("brugernavn")) > 0 Then
    Application.Lock
    Application("OnlineUsers") = Replace(Application("OnlineUsers"), Session("brugernavn") & ",", "")
    Application.UnLock
End If
Avatar billede eagleeye Praktikant
01. juni 2003 - 21:51 #16
Så laver du bare din AddOnlineUser om til dette så den lige tjekke om brugernavnet findes:


Sub AddOnlineUser()
  if inStr(1,Application("OnlineUsers"),"," & Session("brugernavn") &",")=0 then
    Application.Lock
    Application("OnlineUsers") = Application("Onlineusers") & Session("brugernavn") & ","
    Application.UnLock
  End if
End Sub
Avatar billede gatez Nybegynder
01. juni 2003 - 21:55 #17
Ok ja det er da en løsning jeg syntes bare stadig det er ærligt at en bruger står som online selv om brugeren er logget ud...

Hvad med fx. Jubii Chat der viser den jo de bruger der er online og når de logger af så er de væk... Hvordan kan det være jeg ikke kan det ?
Avatar billede gatez Nybegynder
01. juni 2003 - 21:57 #18
I hvor lang tid står brugeren online før han fjernes fra online listen ?

Og hvor lang tid virker et: Session("brugernavn") ?
Avatar billede gatez Nybegynder
01. juni 2003 - 22:05 #19
eagleeye... Smider du ikke lige et svar ind ? Så kan du få dine point for du havde da en god løsning... Takker!
Avatar billede eagleeye Praktikant
01. juni 2003 - 22:06 #20
De står sikkert også at tjekker om brugeren stadig er online.


Der er faktisk en lille fejl i hans script. Hvor man sletter en bruger:

Application("OnlineUsers") = Replace(Application("OnlineUsers"), Session("brugernavn") & ",", "")


Hvis man har to brugere (tilfældige navne):
1  peter
2  hanspeter

Hvis de begge er online står der i listen ",peter,hanspeter,"
Så logger peter ud så fjerner den "peter," i strengen, ;) kan du så se hvem der er online?
Det er en helt nu bruger som hedder hans  og strengen indeholder ",hans,"

Så derfor ret det som slette til:

Application("OnlineUsers") = Replace(Application("OnlineUsers"), "," & Session("brugernavn") & ",", ",")
Avatar billede eagleeye Praktikant
01. juni 2003 - 22:06 #21
Jo et svar.
Avatar billede eagleeye Praktikant
01. juni 2003 - 22:10 #22
Det er en helt nu bruger som hedder hans  og strengen indeholder ",hans,"
ups det endag endnu være end det for den fjerner det sidste , så der står ",hans". Så hvis ole logger ind står der online brugere er ",hansole,"

Så jeg vil klart anbefale at ændre det som vist.
Avatar billede gatez Nybegynder
01. juni 2003 - 22:12 #23
Hvor lang tid er brugerens vist som online på online listen ved du det ?
Avatar billede eagleeye Praktikant
01. juni 2003 - 22:16 #24
Jeg ville gætte på så lang tid som er sat i Session.TimeOut (default timeout er vist 15-20 minutter det kan jeg ikke helt huske). Men jeg er ikke helt sikker, for hvis denne  Session("brugernavn")  er blevet sat tom når Session_OnEnd kaldes vil en bruger forblive i onlinelisten indtil serveren restartes eller du laver en "Log Ud" knap om man kan trykke på.
Avatar billede gatez Nybegynder
01. juni 2003 - 22:18 #25
Hvordan og hvor skal jeg sætte sådan en Session.TimeOut ?
Bliver brugeren så smit af efter de 15-20 min selv om han suffer rundt på min side ?
Avatar billede eagleeye Praktikant
01. juni 2003 - 22:21 #26
Nej session skulle ud hvis brugeren har være inaktiv i længere tid. Præsis som her på eksperten, man kan side flere time online går man ned og spiser aftens man og kommer tilbage er man logget ud. Det kan så ikke ses hvis man har har sat den til autologin ;)


Du kan ændre det ved at skrive:

Session.TimeOut 4  'I minutter.
Avatar billede eagleeye Praktikant
01. juni 2003 - 22:22 #27
med ligmed tegn imellem  Session.TimeOut = 4
Avatar billede gatez Nybegynder
01. juni 2003 - 22:23 #28
Nu har jeg sat Session.Timeout = 20 i toppen af min global.asa så håber jeg det virker :-)

1000 Tak for dine svar !!
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