webForumDet fria alternativet

Besökare on-line

ASP

3 svar · 255 visningar · startad av annesophie

Medlem sedan juni 20012 236 inlägg
Frågan#1

Hej,

Håller på att bygga samman mitt forum med lite andra delar på sidan och har stött på ett problem. Känner på mig att lösningen är riktigt simpel men kan inte riktigt få till det.

Har en sida - STATISTIK - som visar vad besökare på sidan gör just nu (ungefär samma som funktionen Besökaren här på WF).
Ser ut så här:

975715917 Granskar besökarna 9:56:28 AM

Vad jag inte får ihop är följande:

De personer som är inloggade i forumet betecknas TRUE. Jag skulle vilja att personer som är inloggade, istället för att visas som ett sessionnummer, visas med användarnamn, precis som här på WF. Om personen inte är inloggad så skulle man kunna skriva ut "gäst" istället.

Muppen Granskar besökarna 9:56:28 AM
Gäst Läser tråden "QUE?" 9:58:49 AM

*** Fil STATISTIK.asp i förkortat form ***

[1]
<!-- #INCLUDE FILE="LOGINFO.asp" -->

<HTML>
<HEAD>
</HEAD>
<BODY>
<!-- START CONTENT -->
<%
Application.Lock
statistik=Application("Stats")
Application.UnLock
%>

<table border="0" cellspacing="0" cellpadding="1" width="100%">
  <tr>
    <TD class="bread">
	<TABLE BORDER=0 CELLPADDING=1 CELLSPACING=0 width="100%">
<%
count=0
FOR i = 0 TO UBOUND( statistik, 2 )
IF statistik( 0, i ) <> "" THEN
%>
		<TR <%IF statistik( 0, i )=session.sessionID THEN%>BGCOLOR="#eeeeee"<%END IF%>>
			    <TD class="bread" width="20%"><%=statistik( 0, i )%></TD>
			    <TD class="bread" width="65%"><%=statistik( 1, i )%></TD>
			    <TD class="bread"width="15%"><%=statistik( 3, i )%></TD>
		</TR>
<%
count = count + 1
END IF
NEXT
%>
	</TABLE>
<!-- END CONTENT -->
</BODY>
</HTML>
[/1]

*** Includefil LOGINFO.asp ***

[1]
<%
foundUser = FALSE
Application.Lock
statistik = Application( "Stats" )
FOR k = 0 TO UBOUND( statistik, 2 )
' ### OM ANVÄNDAREN FINNS ###
  IF statistik( 0, k ) = Session.SessionID THEN
    
    IF TITLE <> "" THEN
    	statistik( 1, k ) = TITLE
    ELSE
    	statistik( 1, k ) = Request.ServerVariables( "SCRIPT_NAME" )
    END IF
    
    statistik( 4, k ) = Request.ServerVariables( "HTTP_USER_AGENT" )
    foundUser = TRUE
    EXIT FOR
  END IF
NEXT

IF foundUser = FALSE THEN
FOR k = 0 TO UBOUND( statistik, 2 )
' ### OM ANVÄNDAREN EJ FINNS ###
  IF statistik( 0, k ) = "" THEN
    statistik( 0, k ) = Session.SessionID
    
    IF TITLE <> "" THEN
    	statistik( 1, k ) = TITLE
    ELSE
    	statistik( 1, k ) = Request.ServerVariables( "SCRIPT_NAME" )
    END IF
        
    statistik( 2, k ) = Request.ServerVariables( "REMOTE_ADDR" )
    statistik( 3, k ) = TIME()
    statistik( 4, k ) = Request.ServerVariables( "HTTP_USER_AGENT" )
    EXIT FOR
  END IF
NEXT
END IF
Application("Stats") = statistik
Application.UnLock
%>
[/1]

*** Kod som visar vilka medlemmar som är on-line ***

[1]
sql = "select * from Member where memLoggedOn = " & true
set rs = conn.execute(sql)
response.write rs("memName")
[/1]

Förslag någon? :)

Medlem sedan juni 200032 967 inlägg
#2

Lagra session-id i tabellen Member, uppdatera detta när man loggar in. Sedan är det bara att fråga Member-tabellen om vem som är vem.

Mvh

Medlem sedan juni 20012 236 inlägg
#3

Hmm ok, ska testa detta genast. Tack! :)

Medlem sedan nov. 20017 144 inlägg
#4

Detta är en princip som jag tillämpar. Du kan ju kika på't:
På loginsidan:

Dim username
username = RecSet("Username")
Session("username") = username
Application("active_users")=Application("active_users") & uname & "*"

På "Vilka är onlinesidan":

  Set Recset = Server.CreateObject("ADODB.Recordset")
Recset.Open strSQL, conn, 3, 3

Do While Not Recset.EOF  
user_array=split(Application("active_users"),"*")
  for t=0 to ubound(user_array)

  user=user_array(t)
If Recset("username") = user Then 
Response.write "Online: "& Recset("username") &"<br>"
end if
next
				  
Recset.MoveNext
Loop
%>
263 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)