Hej! Jeg skal på min side, kunne checke hvilke brugere der er online, og har lavet det i global.asa, og når man går ind på siden, virker det også perfekt. Men når man så lukker siden, bliver brugeren ikke "logget af". Ved at teste en masse, er jeg ret sikker på at det er "onlineQuizUsers.Delete 1" som ikke virker! Men hvad er forkert, eller er der en nemmere måde?
Her er OnEnd-koden:
Sub Session_OnEnd() onlineQuizUsers.MoveFirst
Do While Not onlineQuizUsers.EOF If onlineQuizUsers.Fields("id").Value = Session.SessionID Then onlineQuizUsers.Delete 1 End If onlineQuizUsers.MoveNext Loop
Folk har altid problemer med queries i Session_OnEnd. Deres forespørgsel udføres enten ikke, eller også bliver den det med X antal minutters forsinkelse.
Jamen hvordan laver man så en "Hvem er online" funktion som faktisk virker? For er en bruger først logget ind på min side, bliver han aldrig slettet fra ovenstående kode...
Lav dig en ekstra kolonne af typen datetime (dato/klokkeslæt) i tabellen med brugere, som du fx. kalder "SidstOnline". Dette kan du opdatere eksempelvis hvert minut, når en bruger er online således:
If SidstOpdateret = "" Then SidstOpdateret = DateAdd("s", -60, Now) If DateDiff("s", SidstOpdateret, Now) >= 60 Then ObjConn.Execute("Update BrugerTabel Set SidstOnline = Now() Where BrugerID = " & Session("BrugerID")) SidstOpdateret = Now End If
Når du så skal vise alle online-brugere, kan du lave følgende udtræk:
Set rs = objConn.Execute("Select Brugernavn From BrugerTabel Where DateDiff('s', SidstOnline, Now()) < 60") While Not rs.EOF Response.Write rs("Brugernavn") & "<br>" rs.MoveNext Wend
Undskyld det sene svar... Men ferie osv! Men de kald du laver.. set rs = objConn.Execute... Kan jeg bare skrive det fra alle ASP-sider? Hvordan ved den hvilket man snakker om osv?
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.