Avatar billede obhat Nybegynder
31. januar 2004 - 18:50 Der er 41 kommentarer og
4 løsninger

Hvem er online

Jeg mangler et asp script som kan fortælle hvem der er online, har før rodet med en løsning på det og har aldrig fået det til at virke
Avatar billede steen Nybegynder
31. januar 2004 - 19:33 #1
Avatar billede obhat Nybegynder
31. januar 2004 - 20:25 #2
Det link har jeg kigget på, aner ikke hvad jeg skal stille op med det?
Avatar billede steen Nybegynder
31. januar 2004 - 20:33 #3
Ok... beskriv hvilken del du ikke forstår :)
Avatar billede obhat Nybegynder
31. januar 2004 - 21:08 #4
Hvor skal de enkelte ting placeres?
På en side eller flere?
Avatar billede steen Nybegynder
31. januar 2004 - 21:17 #5
ok...

I din global.asa skal du sætte følgende ind under "Sub Application_OnStart"

Application.Lock
Application("OnlineUsers") = ","
Application.UnLock

Og  stadig i din global.asa, men under "Sub Session_OnEnd" sætter du følgende ind:

If Len(Session("UserName")) > 0 Then
    Application.Lock
    Application("OnlineUsers") = Replace(Application("OnlineUsers"), Session("Username") & ",", "")
    Application.UnLock
End If

På din loginside sætter du følgende ind:
Call AddOnlineUser()

Hvis du så vil se, hvor mange brugere der er på skal du skrive følgende:
Response.Write CountOnlineUsers()

Men hvis du hellere vi se, hvem det er der er online skal du skrive:
Call WriteOnlineUsers()

Men for at alt dette virker skal du lave en includefil, som du inkluderer i alle de sider, hvor du enten tilskriver, eller blot vil have en status. I denne fil skal du sætte følgende ind:

<%
' --- procedure til at tilføje en online bruger ---
Sub AddOnlineUser()
    Application.Lock
    Application("OnlineUsers") = Application("Onlineusers") & Session("Username") & ","
    Application.UnLock
End Sub
' --- funktion som retunerer antallet af online brugere ---
Function CountOnLineUsers()
    Dim arrUsers
    ' --- lav et array med online brugere ---
    arrUsers = Split(Application("Onlineusers"), ",")
    ' --- antallet af online brugere er altid størrelsen på arrayet -1 ---
    CountOnLineUsers = UBound(arrUsers) - 1
End Function

' --- procedure til at udskrive online brugere ---
Sub WriteOnLineUsers()
    Dim arrUsers
    Dim n
    ' --- lav et array med online brugere ---
    arrUsers = Split(Application("Onlineusers"), ",")
    ' --- udskriv liste ---
    For n = 1 To UBound(arrUsers) -1
        Response.Write(arrUsers(n) & "<br>")
    Next
End Sub
%>
Avatar billede steen Nybegynder
31. januar 2004 - 21:20 #6
bemærk at du i din loginside skal sætte brugerens navn ind i en session "Session("Username")" førend du kalder funktionen "Call AddOnlineUser()"

Husk ovennævnte kode er skrevet af: Dennis Knappe
Avatar billede obhat Nybegynder
31. januar 2004 - 22:12 #7
Nu har jeg ikke nogen global.asa
Hvordan laver jeg den?
Avatar billede steen Nybegynder
31. januar 2004 - 22:15 #8
Opret en fil der hedder: global.asa placer den i roden

Indhold:
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
Sub Application_OnStart
    ' Skriv kode som skal køres når applikationen (serveren) starter
End Sub

Sub Application_OnEnd
    ' Skriv kode som skal køres når applikationen (serveren) stoppes
End Sub

Sub Session_OnStart
    ' Skriv kode som skal køres når en session starter
End Sub

Sub Session_OnEnd
    ' Skriv kode som skal køres når en session afsluttes
End Sub
</SCRIPT>
Avatar billede obhat Nybegynder
31. januar 2004 - 22:41 #9
Det har jeg gjort nu..
Avatar billede steen Nybegynder
31. januar 2004 - 22:44 #10
Ok... og du har husket at du i
din global.asa skal du sætte følgende ind under "Sub Application_OnStart"

Application.Lock
Application("OnlineUsers") = ","
Application.UnLock

Og  stadig i din global.asa, men under "Sub Session_OnEnd" sætter du følgende ind:

If Len(Session("UserName")) > 0 Then
    Application.Lock
    Application("OnlineUsers") = Replace(Application("OnlineUsers"), Session("Username") & ",", "")
    Application.UnLock
End If
Avatar billede obhat Nybegynder
31. januar 2004 - 22:46 #11
Skal jeg bruge et specielt program til global.asa?
Jeg synes ikke min IIS 5.0 kan kende filen
Avatar billede obhat Nybegynder
31. januar 2004 - 22:48 #12
jo det har jeg
Avatar billede steen Nybegynder
31. januar 2004 - 22:48 #13
Nej... bare en almindelig teksteditor. Og din IIS burde "kende" den. Hvad mener du helt præcist med at den ikke kan kende den....
Avatar billede obhat Nybegynder
31. januar 2004 - 22:49 #14
Det ser flg. ud indtil videre:


<SCRIPT LANGUAGE=VBScript RUNAT=Server>
Sub Application_OnStart
    ' Skriv kode som skal køres når applikationen (serveren) starter
   
    Application.Lock
Application("OnlineUsers") = ","
Application.UnLock

Og  stadig i din global.asa, men under "Sub Session_OnEnd" sætter du følgende ind:

If Len(Session("UserName")) > 0 Then
    Application.Lock
    Application("OnlineUsers") = Replace(Application("OnlineUsers"), Session("Username") & ",", "")
    Application.UnLock
End If
   
End Sub

Sub Application_OnEnd
    ' Skriv kode som skal køres når applikationen (serveren) stoppes
End Sub

Sub Session_OnStart
    ' Skriv kode som skal køres når en session starter
End Sub

Sub Session_OnEnd
    ' Skriv kode som skal køres når en session afsluttes
   
    If Len(Session("UserName")) > 0 Then
    Application.Lock
    Application("OnlineUsers") = Replace(Application("OnlineUsers"), Session("Username") & ",", "")
    Application.UnLock
End If
   
End Sub
</SCRIPT>
Avatar billede steen Nybegynder
31. januar 2004 - 22:49 #15
Husk at lukke din browser ned, og op igen, idet du skal sette en ny session
Avatar billede steen Nybegynder
31. januar 2004 - 22:51 #16
Det kan godt være du lige skal genstarte din iis.... vi har jo en kode stående i app_onstart
Avatar billede obhat Nybegynder
31. januar 2004 - 22:51 #17
Jeg gemmer den i notebook, filen får bare et mærkelig icon
et windows icon ligesom når windows ikke kan kende et program
Avatar billede steen Nybegynder
31. januar 2004 - 22:53 #18
Det skal du ikke tage dig af.... den er god nok alligevel
Avatar billede obhat Nybegynder
31. januar 2004 - 22:59 #19
Okay, er min global.asa så ok nu?

<SCRIPT LANGUAGE=VBScript RUNAT=Server>
Sub Application_OnStart
    ' Skriv kode som skal køres når applikationen (serveren) starter
   
    Application.Lock
Application("OnlineUsers") = ","
Application.UnLock

Og  stadig i din global.asa, men under "Sub Session_OnEnd" sætter du følgende ind:

If Len(Session("UserName")) > 0 Then
    Application.Lock
    Application("OnlineUsers") = Replace(Application("OnlineUsers"), Session("Username") & ",", "")
    Application.UnLock
End If
   
End Sub

Sub Application_OnEnd
    ' Skriv kode som skal køres når applikationen (serveren) stoppes
End Sub

Sub Session_OnStart
    ' Skriv kode som skal køres når en session starter
End Sub

Sub Session_OnEnd
    ' Skriv kode som skal køres når en session afsluttes
   
    If Len(Session("UserName")) > 0 Then
    Application.Lock
    Application("OnlineUsers") = Replace(Application("OnlineUsers"), Session("Username") & ",", "")
    Application.UnLock
End If
   
End Sub
</SCRIPT>
Avatar billede steen Nybegynder
31. januar 2004 - 23:02 #20
Nej....

Sådan her skal den være...

<SCRIPT LANGUAGE=VBScript RUNAT=Server>
Sub Application_OnStart
    ' Skriv kode som skal køres når applikationen (serveren) starter
   
    Application.Lock
    Application("OnlineUsers") = ","
    Application.UnLock   
End Sub

Sub Application_OnEnd
    ' Skriv kode som skal køres når applikationen (serveren) stoppes
End Sub

Sub Session_OnStart
    ' Skriv kode som skal køres når en session starter
End Sub

Sub Session_OnEnd
    ' Skriv kode som skal køres når en session afsluttes
   
    If Len(Session("UserName")) > 0 Then
    Application.Lock
    Application("OnlineUsers") = Replace(Application("OnlineUsers"), Session("Username") & ",", "")
    Application.UnLock
End If
   
End Sub
</SCRIPT>
Avatar billede steen Nybegynder
31. januar 2004 - 23:09 #21
Skriv lige når du stopper for i dag, da jeg selv snart har planer om at lukke ned. Men jeg vil gerne lige hjælpe lidt endnu...
Avatar billede remo27 Nybegynder
31. januar 2004 - 23:17 #22
jeg har en simplet, hvis online liggende som ikke bruger global.asa
Avatar billede obhat Nybegynder
31. januar 2004 - 23:22 #23
Jeg stopper for i dag, jeg er ved at være træt, så vender tilbage engang i morgen
Tak indtil videre :-)
Avatar billede steen Nybegynder
31. januar 2004 - 23:22 #24
obhat >> er du med endnu?
Avatar billede steen Nybegynder
31. januar 2004 - 23:23 #25
obhat >> Ok...
Avatar billede remo27 Nybegynder
31. januar 2004 - 23:37 #26
Steen>> jeg 2 simple asp koder, som viser online på sitet, og det er uden brug af global.asa
Avatar billede remo27 Nybegynder
31. januar 2004 - 23:38 #27
Sorry Steen, jeg så ikk det var obhat, som har oprettet dette spørgsmål
Avatar billede obhat Nybegynder
31. januar 2004 - 23:43 #28
remo27 viser den hvem der er online og ikke kun hvor mange?
Avatar billede remo27 Nybegynder
31. januar 2004 - 23:47 #29
den viser i tal eks. 3 er online på dit site
Avatar billede obhat Nybegynder
31. januar 2004 - 23:58 #30
Okay, men det jeg skal bruge er hvem der er online, altså at alle navne listes
Avatar billede steen Nybegynder
02. februar 2004 - 19:15 #31
obhat >> Har du droppet det eller? Skriv hvis du skal ha hjælp!

/Steen
Avatar billede obhat Nybegynder
02. februar 2004 - 20:04 #32
Nej, jeg har ikke droppet det, trænger bare lige til at komme fra det en to dage, det kører lidt meget rundt for mig lige nu :-/
Avatar billede steen Nybegynder
02. februar 2004 - 20:06 #33
Ok... Du skriver bare når du er klar igen :-)
Avatar billede obhat Nybegynder
03. februar 2004 - 15:28 #34
Siden "online.asp" og min global.asa burde være i orden, men hvad og hvordan jeg skal ændre "login.asp" kan jeg ikke se, gider du evt. at lave ændringen?


<%

login_email = replace(request.form("email"), "'", "''")
if len(login_email) <= 0 AND request.cookies("autologin") = "yes" then
login_email = request.cookies("email")
response.write "["&request.cookies("autologin")&"]"
end if
login_password = trim(request.form("password"))
if len(login_password) <= 0 AND request.cookies("autologin") = "yes" then login_password = request.cookies("password")


AccessDataBase = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("db/system.mdb")
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open AccessDataBase
Set rs = Conn.Execute("SELECT email, password, fnavn, enavn, adresse, postnummer, by FROM members WHERE email = '"&login_email&"'")

if not rs.EOF AND not rs.BOF then
  if trim(rs("password")) = login_password then
  session("email") = rs("email")
  session("fnavn") = rs("fnavn")
  session("enavn") = rs("enavn")
  session("adresse") = rs("adresse")
  session("postnummer") = rs("postnummer")
  session("by") = rs("by")
    response.redirect ("loggetind.asp?msg="&Server.UrlEncode(""))
  else
response.cookies("autologin") = "no"
response.redirect("loginerror.asp")
  end if
else
response.cookies("autologin") = "no"
response.redirect("loginerror.asp")
end if

rs.Close
Conn.Close
Set Conn = Nothing
Set rs = Nothing
   
%>
Avatar billede steen Nybegynder
03. februar 2004 - 18:18 #35
<%
login_email = replace(request.form("email"), "'", "''")

if len(login_email) <= 0 AND request.cookies("autologin") = "yes" then
login_email = request.cookies("email")
response.write "["&request.cookies("autologin")&"]"
end if
login_password = trim(request.form("password"))
if len(login_password) <= 0 AND request.cookies("autologin") = "yes" then login_password = request.cookies("password")


AccessDataBase = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("db/system.mdb")
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open AccessDataBase
Set rs = Conn.Execute("SELECT email, password, fnavn, enavn, adresse, postnummer, by FROM members WHERE email = '"&login_email&"'")

if not rs.EOF AND not rs.BOF then
  if trim(rs("password")) = login_password then
    session("email") = rs("email")
    session("fnavn") = rs("fnavn")
    session("enavn") = rs("enavn")
    session("adresse") = rs("adresse")
    session("postnummer") = rs("postnummer")
    session("by") = rs("by")
    session("username") = login_email
    Call AddOnlineUser()
    response.redirect ("loggetind.asp?msg="&Server.UrlEncode(""))
  else
    response.cookies("autologin") = "no"
    response.redirect("loginerror.asp")
  end if

else
  response.cookies("autologin") = "no"
  response.redirect("loginerror.asp")
end if

rs.Close
Conn.Close
Set Conn = Nothing
Set rs = Nothing
   
%>
Avatar billede obhat Nybegynder
03. februar 2004 - 22:13 #36
Arrh det ser ud til at virke, nu får jeg da en email på siden "online.asp"
Men jeg ville egentlig gerne ha en liste ud med navn, efternavn og by

Hvor meget skal der ændres for at få det?
Avatar billede obhat Nybegynder
03. februar 2004 - 23:11 #37
Til det men navn, efter osv. har jeg fået løst.
Men en anden ting der undre mig er at hvis man logger ind står navnet fint nok på listen, lukker man siden eller mister forbindelsen og logger ind igen, står ens navn 2 gange, findes der ikke en mulighed for at et login kun listes en gang, ellers ser det lidt mærkeligt ud
Avatar billede steen Nybegynder
04. februar 2004 - 08:03 #38
HMMMM... det kan jeg ikke forstå, for din global.asa skulle jo netop fjerne de brugere fra liste, som forlader websitet... jeg har ingen ide!
Avatar billede obhat Nybegynder
04. februar 2004 - 12:53 #39
Jeg stod 18 gange online i går :-(
Min global.asa ser sådan ud, ved ikke om jeg har lavet en fejl i den?


<SCRIPT LANGUAGE="VBScript" RUNAT="Server">


' timeout_sek = 2


Sub Application_OnStart
    ' Nulstiller antallet af brugere når applikationen (serveren) startes
   
    Application.Lock
    Application("OnlineUsers") = ","
    Application.UnLock
   
   
    Application("ActiveUsers") = 0
End Sub

Sub Application_OnEnd
    ' Skriv kode som skal køres når applikationen (serveren) stoppes
End Sub

Sub Session_OnStart
    ' Forøger antallet af brugere med 1, når en session startes
    Application.Lock
        Application("ActiveUsers") = Application("ActiveUsers") + 1
    Application.UnLock
End Sub

Sub Session_OnEnd
    ' Reducer antallet af brugere med 1, når en session afsluttes
   
If Len(Session("username")) > 0 Then
    Application.Lock
    Application("OnlineUsers") = Replace(Application("OnlineUsers"), Session("username") & ",", "")
    Application.UnLock
End If
   
   
    Application.Lock
        Application("ActiveUsers") = Application("ActiveUsers") - 1
    Application.UnLock
End Sub
</SCRIPT>
Avatar billede obhat Nybegynder
04. februar 2004 - 13:04 #40
Jeg fjernede dette fra mit login

<%
Session.Timeout = 60
%>

Men nu slettes listen total efter ganske kort tid også selvom jeg stadig er online?
Avatar billede steen Nybegynder
04. februar 2004 - 13:10 #41
Din global.asa er god nok. Jeg ved ikke hvorfor den ter sig sådan :( desværre
Avatar billede obhat Nybegynder
04. februar 2004 - 13:39 #42
Okay, jeg takker i hvert fdald for hjælpen :-)
Avatar billede obhat Nybegynder
04. februar 2004 - 14:33 #43
Når jeg sætter "logud" i toppen af mit login form

<%
session.abandon
%>

logges de gamle sessions altid af inden en ny sættes, på den måde får jeg ikke flere af samme på online listen, det er måske lidt snyd, men det virker, så alt i alt ser det ud til at fungere ok nu :-)
Avatar billede steen Nybegynder
04. februar 2004 - 14:37 #44
;-)
Avatar billede obhat Nybegynder
04. februar 2004 - 15:33 #45
Alt så fint ud, men jeg forsvinder altså fra listen efter få minutter, selvom jeg stadig er online?
Hvad kan det skyldes?
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