19. maj 2007 - 17:27Der er
3 kommentarer og 1 løsning
Onlinecounter (SESSIONS!)
Hej eksperter.
Jeg har siddet og funderet lidt over hvordan man kan lave en onlinecounter, som kører via sessions. Jeg har før gjort det med en global.asa, som altid har virket kanon. Men i dette tilfælde har jeg ikke mulighed for at benytte en global.asa fil, derefter er jeg kommet frem til at sessions må være den næstbedste løsning. (?)
Men jeg er lidt i tvivl om hvordan jeg skal få en onlinecounter til at køre via sessions, skal jeg bruge en txt fil til at gemme counteren? Og kan den fratrække når sessionen udløber? Eller hvordan og hvorledes ?:s
Jeg har måske en løsning. Hvis vi siger, at Sessions udløber efter 20 min. på din side (standard, men kan ændres med Session.Timeout = 60). Så kan du kode det uden brug af Sessions overhovedet. Nu håber jeg, du har inkluderet en fil på samtlige sider - det vil lette det meget. I hvert fald skal du på hver side, ved load (hvilket giver sig selv når vi arbejder med ASP), gemme dato og klokkeslet i databasen ud for brugeren. I samme inkluderede fil skal du løbe brugere i databasen igennem og sætte alle dem, hvis klokkeslet er over 20 min. gammelt, til offline. På denne måde får du præcis samme resultat, som hvis du brugte Sessions. Nu håber jeg sørme, det er brugere, der er logget ind, ellers skal det laves lidt anderledes - måske med IP?
Men her er i hvert fald løkken, som sætter folk til offline: ------------------------------------------------------------ strSQL = "SELECT [id] FROM [users] WHERE [online] = true AND [lastlogin] < #" & DateAdd("m",-20,now()) & "#" Set rs = Conn.Execute(strSQL) If Not (rs.BOF Or rs.EOF) Then Do While Not rs.EOF Conn.Execute("UPDATE [users] SET [online] = false WHERE [id] = " & rs("id")) rs.MoveNext Loop End If rs.Close ------------------------------------------------------------ Håber det hjælper dig! :)
<% timeout_sek = 70 ' timeout i sekunder max_users = "500" ' max antal brugere der skal tælles cookies_check = "no" ' skal der tjekkes om browseren accepterer cookies ["yes" / "no"] Session.Timeout = 2
if session("usernumber") <> "" then application("usersonline_" & session("usernumber")) = now else if InStr(1, request.servervariables("HTTP_COOKIE"),"ASPSESSIONID", 1) <> 0 or cookies_check = "no" then 'Browseren understøtter cookies (eller der tjekkes ikke for om browseren acceptere cookies) For i = 1 to max_users if IsDate(application("usersonline_"&i)) or application("usersonline_"&i) = "" then if application("usersonline_"&i) = "" then session("usernumber") = i i = max_users elseif DateDiff("s",application("usersonline_"&i),Now) > timeout_sek then session("usernumber") = i i = max_users end if end if next application("usersonline_"&session("usernumber")) = now application("userinfo_" & session("usernumber")) = "[" & Request.ServerVariables("REMOTE_HOST") & "]</td><td nowrap>[" & Request.ServerVariables("HTTP_ACCEPT_LANGUAGE") & "]</td><td nowrap>[" & now & "]" if application("usersonline") < session("usernumber") then application("usersonline") = session("usernumber") end if elseif request("mode") <> "check" then response.redirect Request.ServerVariables("SCRIPT_NAME") & "?mode=check" else 'Browseren understøtter ikke cookies response.write "Din browser understøtter ikke cookies" end if end if
if application("usersonline") = "" then application("usersonline") = 1 end if
For i = 1 to application("usersonline") if len(application("usersonline_"&i)) then if DateDiff("s",application("usersonline_"&i),Now) > timeout_sek then application("usersonline_"&i) = "" application("userinfo_"&i) = "" else usersonline = usersonline+1 end if max_i = i end if next
application("usersonline") = max_i
response.write usersonline %>
Herefter kan du kalde den fil, hvor du skal vise online brugere ved <p>Online: <!-- #include file="users_online.asp"--></p>
Sessions sløver i øvrigt din hjemmeside og er du så heldig helt at undgå Sessions på din side, bør du sætte en @ Enablesessionstate = False allerøverst på dine sider, da serveren ellers vil tage forbehold for Sessions og derfor alligevel være lidt sløv. =)
Synes godt om
Slettet bruger
19. maj 2007 - 19:13#4
superiors eksempel var præcis hvad jeg ledte efter :) Tak for det :)
Synes godt om
Ny brugerNybegynder
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.