09. januar 2004 - 10:00Der 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
Kommunerne har digitaliseret indgangen for borgerne. Men bag skærmen håndteres mange arbejdsgange stadig manuelt mellem systemer, mails og organisatoriske siloer.
<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
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.
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...
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...).
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.
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
'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&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.....?!
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.