Avatar billede jelle Nybegynder
26. maj 2003 - 13:49 Der er 5 kommentarer og
2 løsninger

Tjekke om en bruger stadig er online?

Hej!

Hvordan tjekker jeg om en bruger stadig er på siden? Jeg har lavet en session med brugerens ip-adresse... Men jeg skal vel til at bruge global asa?

Håber i kan hjælpe med et svar!
Avatar billede thomas_regin Nybegynder
26. maj 2003 - 13:59 #1
Jeg plejer at gøre således:

'**** Global.asa ***
Sub Application_OnStart
    Application.Lock
    Application("OnlineUsers") = ","
    Application.UnLock
End Sub

Fra en vilkårlig fil, f.eks login-filen kalder jeg så denne funktion, som ligger i en include-fil:

Sub AddOnlineUser()
    Application.Lock
    Application("OnlineUsers") = Application("Onlineusers") & Session("UserID") & "*" & session("UserIP") & "*"
    Application.UnLock
End Sub

Herefter kan jeg kalde en funktion, som tæller antallet af online brugere, som også ligger i en include:

Function CountOnLineUsers()
    Dim arrUsers
    arrUsers = Split(Application("Onlineusers"), ",")
    CountOnLineUsers = UBound(arrUsers) - 1
End Function

Mvh,

/thomas regin.
Avatar billede jelle Nybegynder
26. maj 2003 - 14:05 #2
jamen hvor tit tjekker den så om en bruger er på siden?
Avatar billede thomas_regin Nybegynder
26. maj 2003 - 14:09 #3
Det kan du gøre i en include, som du placerer i toppen af siden, som kalder AddOnlineUser() hver gang siden loader!

Den timer automatisk ud efter 20 minutter, eller når session("UserID") eller en anden session, som du selv har defieret, timer ud!

Mvh,

/thomas regin.
Avatar billede jelle Nybegynder
26. maj 2003 - 14:14 #4
Jamen det jeg har brug for er bare noget kode der går ind og tjekker om ip'en stadig bruges, f.eks. hvert 2 min. hvis den ikke gør det skal der slettes en linie i en db... og en session skal sættes til -1
Avatar billede thomas_regin Nybegynder
26. maj 2003 - 14:26 #5
Jeps.. Det system bruger jeg også!.. Men det er ikke så nemt!.. De eneste muligheder man har for at gøre dette er ved at lave en applikation, som konstant ligger i process linien og pinger.. Eller også at bruge SQL Server Agent, hvilket er den løsning jeg har valgt!

Jeg har et tabel i min DB, som hedder Sessions, som indeholder et ID, IP og "Last Activity".. Hvert 20. minut hopper min SQL Server Agent ind i tabellen og checker om det er over 20 minutter siden, at der sidst var aktivitet. Og hvis ikke, så logger den den pågældende bruger ud.

Men det ændrer ikke ved, at du stadig bliver nødt til at beholde ovenstående session-styrede ASP-gejl, og man bliver også stadig nødt til at kalkulere med, at en session først timer ud efter 20 minutter (som standard)..

Jeg kan desværre ikke give dig source koden til min SQL Server Agent procedure, da denne kun er en lille bitte del af en kæmpe-procedure, som jeg kører hvert 20. minut på samtlige databaser i systemet, men personligt mener jeg, at det er den eneste måde man kan løse problemet på, hvis man ønsker et kontinuerligt check af sine online brugere.

Håber, at det var nogenlunde forståeligt! ;)

Mvh,

/thomas regin
Avatar billede jelle Nybegynder
26. maj 2003 - 14:40 #6
Ok men så dropper jeg lige projektet forløbig... Men jeg vender nok frygteligt tilbage på et tidspunkt :) ellers tak for hjælpen!
Avatar billede thomas_regin Nybegynder
26. maj 2003 - 14:45 #7
Selv tak!
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