Avatar billede krisbjoern Nybegynder
27. december 2001 - 01:11 Der er 2 kommentarer og
1 løsning

Mit script udsrkiver laaaaang liste(uendelig løkke)

Jeg arbejder med et script der skal vise hvor mange der er online på en side samt hvilket brugernavn de har valgt. det går sådan set ret godt de første 10 sek., men så går det galt.
Jeg kan ikke gennemskue hvordan jeg løser mit \'løkke\': hver gang siden opdateres(det gør den automatisk hvert 15.sek.) så tilføjer den een mere til listen, dog uden at ændre på hvor mange der er online.

Her er scriptet:

<SCRIPT LANGUAGE=\"JavaScript\">
<!--

  setTimeout(\"update()\",15000);

  function update(){
        document.location.href=\"inc_showonlineusers.asp\"
        }
-->
</SCRIPT>


<%
  If Session(\"Name\") = \"\" OR Request(\"Topic\") = \"\" Then
        Name = \"Anonym\"
        Topic = \"Common\"
  Else
        Topic = FilterTopic(Request(\"Topic\"))
        Topic = \"Common\"
        Name = Request.Cookies(\"MyGame\")(\"MyName\")
        End If

%>
<!-- #include file=\"inc_onlineusers.asp\" -->
<%

  Name = Request.Cookies(\"MyGame\")(\"MyName\")
  Topic = session(\"Topic\")


  If Not IsEmpty(Application(\"Users\")) Then
      If IsArray(Application(\"Users\")) Then
          uLen = UBound(Application(\"Users\"))
          For I = 0 To uLen
              If Application(\"Users\")(I) = Name Then
                      Exit For
              End If
          Next
          Users = Application(\"Users\")
          UsersGroup = Application(\"UsersGroup\")
          NumOfUsers = UBound(Users)
          ReDim Preserve Users(NumOfUsers)
          ReDim Preserve UsersGroup(NumOfUsers)
          \'Response.AppendToLog \"Number of users when \" & Name & \" entered: \" & NumOfUsers
          Users(NumOfUsers-1) = Name
          \'UsersGroup(NumOfUsers-1) = Topic
          Application(\"Users\") = Users
          Application(\"UsersGroup\") = UsersGroup


            UsersIP = Application(\"UsersIP\")
          UsersIdleTime = Application(\"UsersIdleTime\")
          UsersTimeOn = Application(\"UsersTimeOn\")
          ReDim Preserve UsersIP(NumOfUsers)
          ReDim Preserve UsersIdleTime(NumOfUsers)
          ReDim Preserve UsersTimeOn(NumOfUsers)
            UsersTimeOn(NumOfUsers-1) = Now
          UsersIdleTime(NumOfUsers-1) = 0
          UsersIP(NumOfUsers-1) = Request.ServerVariables(\"REMOTE_ADDR\")
          Application(\"UsersIP\") = UsersIP
          Application(\"UsersTimeOn\") = UsersTimeOn
          Application(\"UsersIdleTime\") = UsersIdleTime
      Else
          \'Response.AppendToLog \"Number of users when \" & Name & \" entered: \" & \"0 (Not Array)\"
          ReDim Users(1)
          ReDim UsersGroup(1)
          Users(0) = Name
          UsersGroup(0) = Topic
          Application(\"Users\") = Users
          Application(\"UsersGroup\") = UsersGroup

          Redim UsersIP(1)
          Redim UsersIdleTime(1)
          Redim UsersTimeOn(1)
          UsersTimeOn(0) = Now
          UsersIdleTime(0) = 0
          UsersIP(0) = Request.ServerVariables(\"REMOTE_ADDR\")
          Application(\"UsersIP\") = UsersIP
          Application(\"UsersTimeOn\") = UsersTimeOn
          Application(\"UsersIdleTime\") = UsersIdleTime

      End If
  Else
    \'Initialize Users Variable
      Dim NewUsers()
      Redim NewUsers(1)
      Dim NewUsersGroup()
      Redim NewUsersGroup(1)
      NewUsers(0) = Name
      NewUsersGroup(0) = Topic
      Application(\"Users\") = NewUsers
      Application(\"UsersGroup\") = NewUsersGroup


      Dim NewUsersIP()
      Redim NewUsersIP(1)
      Dim NewUsersIdleTime()
      Redim NewUsersIdleTime(1)
      Dim NewUsersTimeOn()
      Redim NewUsersTimeOn(1)
      NewUsersTimeOn(0) = Now
      NewUsersIdleTime(0) = 0
      NewUsersIP(0) = Request.ServerVariables(\"REMOTE_ADDR\")
      Application(\"UsersIP\") = NewUsersIP
      Application(\"UsersTimeOn\") = NewUsersTimeOn
      Application(\"UsersIdleTime\") = NewUsersIdleTime
  End If
  Session(\"Enter\") = True

  Function FilterTopic(Topic)
        Topic = Replace(Topic, \":\", \".\")
        Topic = Replace(Topic, \"/\", \".\")
        Topic = Replace(Topic, \"\\\", \".\")
    FilterTopic = Topic
  End Function



if application(\"usersonline\") = \"\" then
    application(\"usersonline\") = 1
end if


\'*************************************************************
\'            Hvor mange Brugere er online                    *
\'*************************************************************
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

If max_i = \"1\" Then
\'Her skrives antallet af online brugere ud
response.write \"<br><font face=Verdana size=1 color=0000ff>There is \" & usersonline & \" gamer online.<br>\"
Else
response.write \"<br><font face=Verdana size=1 color=0000ff>There are \" & usersonline & \" gamers online.<br>\"
End If



\'*************************************************************
\'            Hvad \"hedder\" brugerne der er online            *
\'*************************************************************

  Topic = Session(\"Topic\")
 
  Application.Lock
 

  If Not IsEmpty(Application.Contents(\"Users\")) Then
          Users = Application(\"Users\")
        Group = Application(\"UsersGroup\")
        NumOfUsers = UBound(Users)
        For I = 1 To max_i
              \'If Topic = Group(I) Then
                      Response.Write \"\"
                      Response.Write \"<b>\" & Users(I) & \"</b></a><br>\"
                    Response.Write \"&nbsp;<small><b>IP:</b> \" & Application(\"UsersIP\")(I) & \"<br>\"
              \'End If
        Next
  End If
 
  Application.Unlock

%>

Det ville være rigtig rart hvis nogen kunne give et bud på HVOR det går galt og hvordan jeg løser den vildfarne løkke...

På forhånd tak
Avatar billede cool_casper Nybegynder
27. december 2001 - 02:52 #1
Et vildt gæt:

          For I = 0 To uLen
              If Application(\"Users\")(I) = Name Then
                      Exit For
              End If
          Next

Hvad står der i Application(\"Users\") ?!?
Avatar billede marslars Nybegynder
27. december 2001 - 14:31 #2
Jeg har et lille vildt gæt:

Ved NumUsers prøv at skrive + 1.

Det kan det godt være...

Held og lykke, og håber det hjælper..
Avatar billede krisbjoern Nybegynder
24. februar 2002 - 10:54 #3
Jeg løste det ved at kægge brugerneavnene i en Database i stedet for...
Tak for bidragene.

Venligst
Kristian Bjørn
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