---
title: "Bra sätt att lösa besökare online ?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/13004-bra-sätt-att-lösa-besökare-online"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "erka"
published: "2001-12-04T12:51:00.000Z"
updated: "2001-12-04T18:15:00.000Z"
replies: 13
views: 369
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/13004-bra-sätt-att-lösa-besökare-online"
---

# Bra sätt att lösa besökare online ?

## #1 — erka, 2001-12-04T12:51Z

Jag tänkte visa vilka som är inloggade på en site för tillfället. Då är frågan vilket sätt som är smidigaste om man också tänker på prestanda.

1\. Jag skapar ett fält i db:n som heter online och är en bolean. Sedan när någon loggar in sätter jag den till true och i session_on_end i global.asa lägger jag en update som sätter värdet till false. Eftersom namnen på de aktiva besökarna ska visas med en länk vid deras namn på varje sida måste jag hämta ut vilka som har online = true på varje sida (en include) och det faktum att jag redan har rätt mycket databas hämtningar gör att detta skulle söla ner systemet ännu mer. Det fins är att jag enkelt har infon om vilka som är online i db:n

2\.När de loggar in så skickar jag deras namn samt namnid till en text fil (separerat med , tecken). Sedan hämtar jag datan från textfilen och splittar upp den efter önskemål och skriver ut det som behövs (en include). I session_on_en lägger jag sedan att de plockar bort raden med personens id ifrån textfilen. 

Någon som har lite tipps kanske ?

Permalänk: https://www.webforum.nu/p/13004

## #2 — LarsG, 2001-12-04T12:58Z

Skippa databaser och textfiler, lagra användarna i en application-variabel istället.

Permalänk: https://www.webforum.nu/p/299792

## #3 — erka, 2001-12-04T13:01Z

Jo jag tänkte på det först men kollade på lite andra lösningar då jag inte riktigt förstod hur applications fungerade.

Jag har två värden, användarnamn och användarid tex:
strUserName = "Erik Forsberg"
IntUserId = "1"

och:
strUserName = "Bosse Andersson"
IntUserId = "2"

Hur loopar jag allt som finns i application och skriver ut alla användare?

Permalänk: https://www.webforum.nu/p/299793

## #4 — jorgen, 2001-12-04T13:03Z

> Skippa databaser och textfiler, lagra användarna i en application-variabel istället.

Problemet är ju att Session_OnEnd inte alltid utförs. Har du något bra kodexempel på hur man får det att fungera LarsG?

mvh Jörgen :)

Permalänk: https://www.webforum.nu/p/299794

## #5 — LarsG, 2001-12-04T13:09Z

Jo att session_onEnd inte fungerar är ett problem, men det gäller väl oavsett vilken lösning man använder. 

Det enda som jag ser är att man har någon egen hantering av timeout. Det vill säga att man själv lagrar en timestamp som man uppdaterar vid besök och kontrollerar innan man visar data.

Permalänk: https://www.webforum.nu/p/299795

## #6 — erka, 2001-12-04T13:26Z

Men hur gör man för att få in värden i en application som en 2 dimensionel array.

Något sådant här efter man har logga in eller ?

```
strUserName = Session("UserName")
IntUserId = Session("UserId")
Application("Online")=Application("Online") & strUsername & IntUserId & "*"
```

Vad gör \* tecknet ? jag kanske är på rätt väg iag. :)

Permalänk: https://www.webforum.nu/p/299796

## #7 — LarsG, 2001-12-04T13:32Z

Jo

```
application.lock
Application("Online")=Application("Online") & strUsername & "*" & IntUserId & "*" 
application.unlock
```

\* är bara för att man skall skilja olika saker åt

```
users = split(application("online"),"*")
for i = 0 to ubound(users) step 2
response.write "Username: " & users(i)
response.write "Userid: " & users(i+1)
next
```

Permalänk: https://www.webforum.nu/p/299797

## #8 — erka, 2001-12-04T13:33Z

Tack LarsG ! Jobbar vidare på det och kommer säkert med någon mer fråga. Var ju på rätt väg iaf ;)

Permalänk: https://www.webforum.nu/p/299798

## #9 — erka, 2001-12-04T13:50Z

Återkom fort, jag gör en liten test bara för att se om det kan bli som jag vill. skrev lite test kod för att pröva mer fler värden än 1.

```
<%
Application("Online") = ""

Application.Lock
	strUserName = "Erik Forsberg"
	IntUserId = 1
	Application("Online")= Application("Online") & strUsername & "*" & IntUserId & "*" 

	strUserName = "Bo Frederiksson"
	IntUserId = "6"
	Application("Online")= Application("Online") & strUsername & "*" & IntUserId & "*" 
Application.Unlock

Users = split(Application("Online"),"*")
For a = 0 to ubound(Users) step 2
	Response.Write "Username: " & users(a) &"&nbsp;"
	Response.Write "Userid: " & users(a+1) &"<br>"
Next

%>
```

Men får då felmeddelandet 

```
Microsoft VBScript runtime error '800a0009' 

Subscript out of range: '[number: 5]' 

/test/inloggade.asp, line 17
```

Det är raden som skriver ut UserId:t det som kommer ut på sidan är 

```
Username: Erik Forsberg Userid: 1
Username: Bo Frederiksson Userid: 6
Username:   
Microsoft VBScript runtime error '800a0009' 

Subscript out of range: '[number: 5]' 

/test/inloggade.asp, line 17
```

Vad gör jag för fel eftersom han inte hittar något värde där ? tacksam :)

Permalänk: https://www.webforum.nu/p/299799

## #10 — jorgen, 2001-12-04T14:01Z

Hej, prova denna då, borde fungera tycker man.

```
Users = split(Application("Online"),"*")
For a = 0 to ubound(Users, 2)
Response.Write "Username: " & users(a) &" "
Response.Write "Userid: " & users(a) &"<br>"
Next
```

mvh Jörgen

Permalänk: https://www.webforum.nu/p/299800

## #11 — erka, 2001-12-04T14:05Z

Nej den fungerade inte riktigt heller. Jag tror problemet är att man får det separerat så här

Erik Forsberg\*1\*Bo Frederiksson\*6\*

Borde man inte kunna göra så här istället

```
Application("Online")= Application("Online") & strUsername & "," & IntUserId & "*"
```

Sedan separera den först vid \* och sedan vid , tecknen. Men det verkar ändå inte smidigt, det verkar som den inte kommer in i en 2 dim. array efter allt. Någon som har mer tipps ?

Permalänk: https://www.webforum.nu/p/299801

## #12 — LarsG, 2001-12-04T14:06Z

Du får nog bete dig lite olika beroende på om application("online") är tom eller inte.

```
Application.Lock

strUserName = "Erik Forsberg"
IntUserId = 1

if  Application("online") = "" then
Application("Online")= strUsername & "*" & IntUserId 
else
Application("Online")= Application("online") & "*" & strUsername & "*" & IntUserId 
end if

strUserName = "Bo Frederiksson"
IntUserId = "6"
if  Application("online") = "" then
Application("Online")= strUsername & "*" & IntUserId 
else
Application("Online")= Application("online") & "*" & strUsername & "*" & IntUserId 
end if

Application.Unlock
```

Permalänk: https://www.webforum.nu/p/299802

## #13 — erka, 2001-12-04T14:48Z

Nu verkar det gå bättre :) tack killar, jag återkommer säkert om någon timme eller dag (förhoppningsvis inte)

Tack igen!

Permalänk: https://www.webforum.nu/p/299803

## #14 — M@rtin, 2001-12-04T18:15Z

Global.asa är ju ett problem eftersom den inte fungerar så ofta.

Men idé nummer 2 verkar väääldigt omständig.

Ett annat alternativ är väl att man sätter en egen gräns för hur lång tid man ska vara inloggad o sen uppdaterar ett databasfält med senaste laddningstiden hela tiden. 

I onlinelista visar du sedan alla som har en tidsdiff som är mindre än typ 20 min.

Permalänk: https://www.webforum.nu/p/299804

---

Tråden på webben: https://www.webforum.nu/amne/asp/13004-bra-sätt-att-lösa-besökare-online
