Avatar billede mskjoldp Novice
09. januar 2004 - 10:00 Der er 20 kommentarer og
1 løsning

Vis om Brugeren er online - global.asa

Hej E

Jeg har kontrol over hvor mange brugere der er på mit site. Men. I den liste hvor jeg lister alle tilmeldte brugere, ønsker jeg at vise om Brugeren er online(logget ind). Problemet er at koden kun viser at Brugeren selv er online, selvom der er flere online. Jeg bruger asp, asa og en access db.

Her er noget koden til den liste der viser alle tilmeldte Brugere:
bla bla bla db forbindelse og design

<%    Do Until rs.Eof
nnavn = rs("nick") %>

<td m.m.> ...forskellige andre oplysninger om brugeren ...

'Her vil jeg så vise om brugeren er logget ind
<%    If Session("nick") = nnavn Then %>
<td>font class=rettet> online</font></a></td>
<%    End if%>
'Brugeren er logget ind, men jeg får kun listet at den enkelte Bruger er logget ind... (hvilket næsten giver sig selv pga koden...)

<%    rs.Movenext
Loop %> osv....

Jeg har prøvet at kreere noget ala:
If Session("nick") = Application("OnlineUsers") Then
bla bla online...
end if

Men så listes slet ikke at nogen er online..

What to do?
/Skjold
Avatar billede mskjoldp Novice
09. januar 2004 - 10:01 #1
min global.asa file:

<script LANGUAGE="VBScript" RUNAT="Server">
Sub Application_OnStart
    ' starter fra 0
    Application("ActiveUsers") = 0
   
    Application.Lock
    Application("OnlineUsers") = ","
    Application.UnLock
End Sub

Sub Session_OnStart
    Session.Timeout = 10
    Session("Start") = Now
    Application.Lock
        Application("ActiveUsers") = Application("ActiveUsers") + 1
    Application.UnLock
End Sub

Sub Session_OnEnd
    Application.Lock
        Application("ActiveUsers") = Application("ActiveUsers") - 1
    Application.UnLock
   
    If Len(Session("nick")) > 0 Then
    Application.Lock
    Application("OnlineUsers") = Replace(Application("OnlineUsers"), "," & Session("nick") & ",", ",")
    Application.UnLock
    End If
End Sub



</script>

/Skjold
Avatar billede deeflate Nybegynder
09. januar 2004 - 10:17 #2
Avatar billede mskjoldp Novice
09. januar 2004 - 10:25 #3
--> deeflate

Jeg har været mange koder/forslag/demoer gennem i nat, og ingen af dem kan det jeg ønsker.

Det du henviser til i linket: http://activedeveloper.dk/julekalender/julegaver/whoson.asp
Viser alle brugerne der er online via- Call WriteOnlineUsers()

Det virker også fint, men det er ikke det jeg skal bruge. Jeg skal liste alle Brugere tilmeldt sitet, og dem der er online skal der stå online ud for.

Linket: http://www.codeproject.com/asp/user_logtime.asp?target=online
Har jeg ikke lige mod på at knække for at prøve at tilpasse... med mindre der ikke kommer flere indlæg her...

/Skjold
Avatar billede deeflate Nybegynder
09. januar 2004 - 10:40 #4
Hovedpointen i det sidste er at der er et offline felt i databasen. Det kan du så tjekke på for at se om den pågældende bruger er online...
Avatar billede mskjoldp Novice
09. januar 2004 - 10:46 #5
Jeg bruger ikke en db til at registere brugerne. Det burde jeg måske have gjort mere klart. Jeg bruger en db til at hente alle andre data end Brugere online.
Avatar billede mskjoldp Novice
09. januar 2004 - 10:48 #6
Der er nogen problemer med at bruge en db til at registere Bruger online... Hvis en Bruger online lukker Browser vinduet så mener jeg at Brugeren ikke sættes til offline i db'en...

Men hvis nogen ved andet om dette er jeg interesseret...

/Skjold
Avatar billede deeflate Nybegynder
09. januar 2004 - 10:55 #7
Det burde ske efter noget tid, når sessionen løber ud og session.onEnd kaldes.

Det står der også på siden...

(When the user hits logout then Session.Abandon will be called. If the user quits your application without hitting logout then after the session.Timeout expires Session_OnEnd will be executed. In this procedure you will update the record written in login.asp and you will update the Logout_time and the offline field to True.)


Men det er rigtigt at man af og til hører om at session.OnEnd ikke eksekveres korrekt (eller overhovedet...).
Avatar billede mskjoldp Novice
09. januar 2004 - 11:09 #8
hmmmm....?! Jeg orker ikke at smide min brugbare kode på hylden og prøve med db online brugere. Jeg venter og ser om der er andre forslag, men tusinde tak for indlægene.

/Skjold
Avatar billede deeflate Nybegynder
09. januar 2004 - 11:20 #9
Det er bare i orden :)
Avatar billede danq Nybegynder
09. januar 2004 - 12:32 #10
mskjoldp.. jeg har rodet med det spørgsmål i omkring 3 måneder for lang lang tid siden... problemet med global.asa er at den simpelt hen ikke er god nok til at registrere.. den eneste metode du virkelig kan være sikker på at der virker er ved at lægge en kode der lægger brugerens "lastmove" ind i databasen på hver enkelt af dine asp koder. på den måde kan du så når du skal se om brugeren er online sammenligne "lastmove" med dato'en på følgende tidspunkt og så bruge et tidsinterval på fx 10 min. Hvis intervallet er større er brugeren offline, og ellers er brugeren online.. Det er mit bedste forslag.
MVH DanQ
Avatar billede mskjoldp Novice
09. januar 2004 - 13:18 #11
--> DanQ

Det lyder interessant. Jeg får mod på at give mig i kast med koden. Kan du hjælpe mig igang med lidt kode eks.?

Hvordan registrere du de sidste moves? Jeg vi gerne sættes igang.

/Skjold
Avatar billede danq Nybegynder
09. januar 2004 - 13:21 #12
sure.. stik mig din msn adresse.. så kan jeg hjælpe dig via msn.. det er for besværligt at skulle skrive det hele over eksperten..
MVH Dan
Avatar billede mskjoldp Novice
09. januar 2004 - 13:33 #13
kan du bruge messenger add?
Avatar billede danq Nybegynder
09. januar 2004 - 13:34 #14
messenger add? tja.. jeg kan adde dig til min messenger hvis du giver mig din email-adresse.. hehe
Avatar billede mskjoldp Novice
09. januar 2004 - 13:34 #15
ellers MSN add.: skjoldp@msn.dk
Avatar billede mskjoldp Novice
09. januar 2004 - 13:35 #16
er samme som messenger add....
Avatar billede mskjoldp Novice
09. januar 2004 - 14:09 #17
Er du gået i byen allerede..!?
Avatar billede danq Nybegynder
09. januar 2004 - 14:42 #18
Der står at du ikke er på Microsoft Messenger...
Avatar billede mskjoldp Novice
09. januar 2004 - 16:30 #19
hmmmm jeg er på nu... og også logget ind på msn.dk
Avatar billede mskjoldp Novice
10. januar 2004 - 23:12 #20
Problemet er løst via følgende kode:

'Ved login side. Conn.Execute("") er nøglen til vise om brugeren er online
'bla bla bla forbindelse form m.m.
If rs("BrugerKode") = Request.Form("adgangskode") Then
Session("nick") = rs("nick")
Session("admin") = rs("admin")
Conn.Execute("UPDATE bruger SET BrugerOnline = True WHERE nick='" & Request.Form("nick") & "'")
'bla bla bla

'Udskriver om Brugeren er online
<%    If rs("BrugerOnline") = True Then %>
<td><a class="mem" href="default.asp?mode=profil&amp;id=<%=rs("Bid")%>"><font class=rettet> online</font></a></td>
<%    End if%>

'Ved logud siden
Conn.Execute("SELECT * FROM bruger WHERE nick='" & Session("nick") & "'")
Conn.Execute("UPDATE bruger SET BrugerOnline = False WHERE nick='" & Session("nick") & "'")
Session.Abandon
Conn.Close
Response.Redirect("default.asp")

Det skulle gøre det. Så mangler jeg bare at finde ud af hvordan man sætter BrugerOnline til False når brugeren lukker Browservinduet.....?!

/Skjold
Avatar billede mskjoldp Novice
10. januar 2004 - 23:13 #21
lukker spg...
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