Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Artiklar / Titel på artikeln

Aktiva användare på din site

Postad 2002-05-13 av Johan Djupmarker i sektionen ASP.NET, C#, Okategoriserat med 0 Kommentarer | Läst av: 4434, Betyg: 95%

Förord

Det finns flera olika sätt att hålla reda på vilka besökare som för tillfället är aktiva på en sida, tyvärr finns det både för och nackdelar med alla metoder jag känner till. Olika metoder passa olika bra på olika typer av siter, denna metoden är inte på något sätt den bästa, framförallt är den ganska krävande för servern och passar inte så bra på siter med många sid-förfrågningar. Jag har valt att använda mig av en databas för att lagra tidpunkten då varje besökare senast hämtade en sida på webbplatsen, denna tidpunkt jämförs sedan med aktuell tid för att avgöra om besökaren är online eller inte. Fördelen med att använda en databas jämfört med ett applikationsobjekt är att man hela tiden kan presentera information om när en besökare senast accessade en sida (och inte enbart inloggningstidpunkten), nackdelen är förstås att det tar mycket kraft från servern att göra alla uppdateringar och sökningar. Anledningen till att jag valde att uppdatera databasen på varje sida istället för att enbart göra detta vid Session_OnStart och Session_OnEnd är att det vad jag har hört i forumet är problem med att få Session_OnEnd att trigga för alla besökare.
Innehåll
  » Databasen
  » Uppdatera tiden i databasen
  » Visa besökare som är online
  » Kontrollera status för en viss användare
  » Exempel


Databasen

För att utnyttja fördelarna med databasen bör du lagra klockslaget i samma databas/tabell som din vanliga användardatabas. För att visa har jag skapat en tabell med följande innehåll i Access.












tblUsers
IDRäknare
strNameText
dteLastAccessDatum/tid

ID är ett unikt heltal som fungerar som användar-ID, använder du något annat unikt för varje användare går det också bra.

strName är namnet som visas.

dteLastAccess är tidpunkten då användaren senast besökte webplatsen, det är alltså inte när inloggningen skedde utan när besökaren senast var aktiv.


Uppdatera tiden i databasen

För varje sida som besökaren hämtar måste tidpunkten i databasen uppdateras, detta kan göras på följande sätt:


If Len(Session("ID")) > 0 Then 'om inloggad
Dim ConUpdate
Set ConUpdate = Server.CreateObject("ADODB.Connection")
ConUpdate.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("online.mdb") & _
";Persist Security Info=False"
ConUpdate.Execute "UPDATE tblUsers SET dteLastAccess = Now() WHERE ID = " & Session("ID")
ConUpdate.Close
Set ConUpdate = Nothing
End If

För att slippa skriva denna koden på varje sida kan det vara lämpligt att lägga detta i en egen fil som inkluderas på varje sida.


Visa besökare som är online

För att lista alla som är online för tillfället söker man ut alla som har varit aktiva senare än en viss tidpunkt, i detta fallet 5 minuter innan aktuell tid.


Dim ConOnline, RS
Set ConOnline = Server.CreateObject("ADODB.Connection")
ConOnline.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("online.mdb") & ";Persist Security Info=False"

Set RS = ConOnline.Execute("SELECT strName FROM tblUsers WHERE dteLastAccess > #" & DateAdd("n", -5, Now) & "# ORDER BY strName")
Do Until RS.EOF
Response.Write RS("strName") & "
"
RS.MoveNext
Loop

RS.Close
Set RS = Nothing
ConOnline.Close
Set ConOnline = Nothing


Kontrollera status för en viss användare

För att kontrollera om en specifik anändare är aktiv just nu kan vi jämföra dennes tidstämpel med aktuell tid. Om man gör en funktion av detta kan den inkluderas på alla sidor där man vill kontrollera detta. Detta exempel kontrollerar om besökaren har varit aktiv de senaste 5 minutrarna.


Function IsOnline(ID)
Dim ConIsOnline, RS
Set ConIsOnline = Server.CreateObject("ADODB.Connection")
ConIsOnline.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("online.mdb") & ";Persist Security Info=False"

Set RS = ConIsOnline.Execute("SELECT dteLastAccess FROM tblUsers WHERE ID = " & ID)

If DateDiff("n", RS(0), Now) <= 5 Then
IsOnline = True
Else
IsOnline = False
End If

RS.Close
Set RS = Nothing
ConIsOnline.Close
Set ConIsOnline = Nothing
End Function


Exempel

För att lättare förstå har jag skapat en mycket enkel exempelsida där man kan logga in och testa de olika funktionerna. Sidan har ingen riktig inloggning, men eftersom det inte är det viktiga i detta exemplet ska det nog gå bra ändå ;) Hämta exemplet här!
Upp

0 Kommentarer

Skriv en kommentar på artikeln

Ditt betyg på artikeln



Kommentar:





Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 159
27 952
271 704
1 439
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies