webForumDet fria alternativet

Lista alla som är inloggade?

ASP

4 svar · 275 visningar · startad av wborg

Medlem sedan dec. 2003209 inlägg
Frågan#1

Hej,

har letat lite efter ett script som listar alla medlemmar som är online på en idrottsklubbs hemsida ungefär som i ett community, men har inte hittat bågot så jag tänkte höra mig för här om det är någon som vet vart jag ska leta?

Annars har jag tänkt försöka mig på att skapa ett eget script för det men vet ej vilken metod man använder sig av...har man ett sant/falskt värde i en db som ändrar sig varje gång man loggar in/ut på sidan? hoppas på lite tips här.

Jag använder mig av en Access DB.

/S

Medlem sedan sep. 20026 425 inlägg
#2

Precis som du skriver är ett sant/falskt värde i en databas att föredra. Jag skulle lagra 1 för online och 0 för offline i ett fält i databasen. När någon loggar in, sätt fältets värde till 1. När någon loggar ut, sätt fältets värde till 0. Och kolla upp så att inloggade men inaktiva medlemmar inte listas.

Medlem sedan aug. 2003480 inlägg
#3

Hur skulle det se ut i detta script om jag skapar en kollum i mdb som heter online?

<%
Function secure(txt) 
  txt = Replace(txt, "'", "''") 
  secure = txt 
End Function

Session.TimeOut=120

Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\webb\sat\db\admin.mdb"
Set RecSet = Server.CreateObject("ADODB.Recordset")

anvNamn		= secure(Request.Form("anvnamn"))
losenord	= secure(Request.Form("losenord"))

SQL = "SELECT niva FROM admin WHERE anvnamn='" & anvnamn & "' AND losenord='" & losenord &"'"
RecSet.Open SQL, Connect, 3, 3

If not RecSet.EOF Then
  Session("niva") = RecSet("niva")

  If RecSet("niva")="1" Then
    strPage="joker1.asp"
  elseIf RecSet("niva")="2" Then
    strPage="joker2.asp"
  elseIf RecSet("niva")="3" Then
    strPage="joker3.asp"
  elseIf RecSet("niva")="4" Then
    strPage="koll.asp"

  End If

' Här loggas IP när rätt lösenord och password angetts
  SQL = "INSERT INTO iplogg([username],[ip],[loginstatus],[tid]) values ('"& anvnamn &"','"& Request.Servervariables("REMOTE_ADDR") &"','OK',#"& now() &"#)"
  Connect.execute(SQL)

  Response.Redirect strPage
else
' Här loggas IP när fel lösenrod och password angetts

  query="INSERT INTO iplogg([username],[ip],[loginstatus],[tid]) values ('"& anvnamn &"','"& Request.Servervariables("REMOTE_ADDR") &"','Fail',#"& now() &"#)"
  Connect.Execute(query)
end if
  RecSet.Close : set recset = nothing
  Connect.Close : set connect = nothing

  Session("session") = "fel användarnamn eller lösenord"
  Response.Redirect "index.asp"
%>
Medlem sedan apr. 20031 660 inlägg
#4

HEJ!

Komplettera din befintliga select-sql med att hämta id också.

I en Update använder du det sedan.

Connect.Execute("UPDATE admin SET online=1 WHERE id=" & RecSet("id"))

Hämta alla online:

Connect.Execute("SELECT namn FROM admin WHERE online=1")

Kom ihåg att sätta inlogg till 0 där du hanterar utloggningar.

Medlem sedan juli 20041 183 inlägg
#5

Tänk också på att det är poppulärt att ej logga ut från sidan utan många föredrar att bara gå vidare eller helt enkelt stänga fönstret...

Global.asa är till för detta men fungerar inge vidare bra.

Om användaren stänger sidan och Session_OnEnd (eller vad den nu hette?) inte körs så tror jag ändå att den proceduren kommer köras efter att maximum-tiden på sessioner är uppnåd... Sätt t.ex. max-tid till 30 minuter...

Lite idéer bara :)

256 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
130 ms — deklarationer (db)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)
131 ms — ändringar (db)