/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Antal bruge online
Fra : Thygesen


Dato : 23-02-01 23:35

Findes der ikke en anden måde end at bruge global.asa, til at vise hvor
mange brugere der er online. Jeg har nemlig ikke adgang til global.asa på
hos mit webhotel.


Mvh. Christoffer Thygesen



 
 
Jakob Andersen (24-02-2001)
Kommentar
Fra : Jakob Andersen


Dato : 24-02-01 06:32

Thygesen wrote in dk.edb.internet.webdesign.serverside.asp:
> Findes der ikke en anden måde end at bruge global.asa, til at vise hvor
> mange brugere der er online. Jeg har nemlig ikke adgang til global.asa

Du kan bruge Sessions kombineret med en database men dette vil blive meget
upræcist da brugeren først forsvinder når Sessionen timer ud....

--
Dette indlæg er sendt fra http://www.html.dk
* Søg og læs i de danske nyhedsgrupper om webdesign
* Tutorials og artikler om webdesign på dansk

Stig Johansen (24-02-2001)
Kommentar
Fra : Stig Johansen


Dato : 24-02-01 17:42

Hej.


"Jakob Andersen" <jakob@andersen.as> wrote in message
news:kHHl6.37022$2w6.692316@twister.sunsite.dk...
> Thygesen wrote in dk.edb.internet.webdesign.serverside.asp:
> > Findes der ikke en anden måde end at bruge global.asa, til at vise hvor
> > mange brugere der er online. Jeg har nemlig ikke adgang til global.asa
>
> Du kan bruge Sessions kombineret med en database men dette vil blive meget
> upræcist da brugeren først forsvinder når Sessionen timer ud....
>

Og så er der sådan nogle som mig, der konsekvent trykker nej til cookies.
Det betyder, at der formentlig tælles en session for hvert hit.

--
Med venlig hilsen/Best Regards
Stig Johansen - stig@w3data.dk
W3 Data - mailto@w3data.dk





Allan Ebdrup (26-02-2001)
Kommentar
Fra : Allan Ebdrup


Dato : 26-02-01 13:51

"Stig Johansen" <stig@w3data.dk> skrev i en meddelelse
news:3vRl6.39210$2w6.743568@twister.sunsite.dk...
> "Jakob Andersen" <jakob@andersen.as> wrote in message
> news:kHHl6.37022$2w6.692316@twister.sunsite.dk...
> > Thygesen wrote in dk.edb.internet.webdesign.serverside.asp:
> > > Findes der ikke en anden måde end at bruge global.asa, til at vise
hvor
> > > mange brugere der er online. Jeg har nemlig ikke adgang til global.asa
> >
> > Du kan bruge Sessions kombineret med en database men dette vil blive
meget
> > upræcist da brugeren først forsvinder når Sessionen timer ud....
> >
>
> Og så er der sådan nogle som mig, der konsekvent trykker nej til cookies.
> Det betyder, at der formentlig tælles en session for hvert hit.

Yep, man burde faktisk tælle unikke IP adresser... så ville tælleren tælle
færre aktive brugere hvis de deler IP adresse, i stedet for flere som alle
tællere synes at gøre for tiden (20 min timeout er fx uhørt højt sat).
Man kunne så kombinere med en cookie til at checke for om brugeren
understøtter cookies. Pseudokode:

Check for cookie
Hvis ikke cookie så
opdater tæller, identificer bruger udfra IP
skriv cookie
ellers
opdater tæller, identificer bruger udfra IP OG cookie

Det ville være en ret nøjagtig tæller

MVH
Allan Ebdrup
------------
www.ti-fire.dk



Thygesen (26-02-2001)
Kommentar
Fra : Thygesen


Dato : 26-02-01 14:45

> Yep, man burde faktisk tælle unikke IP adresser... så ville tælleren tælle
> færre aktive brugere hvis de deler IP adresse, i stedet for flere som alle
> tællere synes at gøre for tiden (20 min timeout er fx uhørt højt sat).
> Man kunne så kombinere med en cookie til at checke for om brugeren
> understøtter cookies. Pseudokode:
>
> Check for cookie
> Hvis ikke cookie så
> opdater tæller, identificer bruger udfra IP
> skriv cookie
> ellers
> opdater tæller, identificer bruger udfra IP OG cookie
>
> Det ville være en ret nøjagtig tæller

Er der nogen som kan fortælle mig hvordan man kan tjekke om brugeren
understøtter sessions, (altså cookies der ikke gemmes på computeren).

Mvh. Christoffer Thygesen



Allan Ebdrup (26-02-2001)
Kommentar
Fra : Allan Ebdrup


Dato : 26-02-01 18:07

"Thygesen" <thyge@get2net.dk> skrev i en meddelelse
news:3a9a6171@news.carlbro.dk...
> Er der nogen som kan fortælle mig hvordan man kan tjekke om brugeren
> understøtter sessions, (altså cookies der ikke gemmes på computeren).

Check for om en browser tillader session cookies findes der desværre kun een
måde at checke for:
1) Skriv en cookie på en side.
2) Se om den cookie du skrev kan læses på en anden side.

Se her for en løsning der virker men ikke just er "pæn"
http://www.15seconds.com/howto/pg003267.htm

MVH
Allan Ebdrup
www.ti-fire.dk



Thygesen (26-02-2001)
Kommentar
Fra : Thygesen


Dato : 26-02-01 18:23

> Check for om en browser tillader session cookies findes der desværre kun
een
> måde at checke for:
> 1) Skriv en cookie på en side.
> 2) Se om den cookie du skrev kan læses på en anden side.
>
> Se her for en løsning der virker men ikke just er "pæn"
> http://www.15seconds.com/howto/pg003267.htm

Det kom jeg også til at tænke på at man kunne gøre og jeg har også fået
lavet et script der kan tjekke for cookies, det er en smule mere enkelt, men
nok heller ikke så pænt. Det tjekker for om personens browser tillader
sessions (cookies der ikke gemmes på computeren), i modsætning til det du
foreslog som tjekker om cookies der gemmes på computeren er tilladt. Men
princippet er jo det samme og her er det jeg har lavet:

cookie = request.servervariables("HTTP_COOKIE")
if InStr(1, cookie, "ASPSESSIONID", 1) <> 0 then
response.write "Din browser understøtter cookies"
else
if request("mode") <> "check" then
response.redirect "?mode=check"
else
response.write "Din browser understøtter ikke cookies"
end if
end if


Mvh. Christoffer Thygesen



Allan Ebdrup (26-02-2001)
Kommentar
Fra : Allan Ebdrup


Dato : 26-02-01 21:56

"Thygesen" <thyge@get2net.dk> skrev i en meddelelse
news:3a9a948d@news.carlbro.dk...
> Det kom jeg også til at tænke på at man kunne gøre og jeg har også fået
> lavet et script der kan tjekke for cookies, det er en smule mere enkelt,
men
> nok heller ikke så pænt. Det tjekker for om personens browser tillader
> sessions (cookies der ikke gemmes på computeren), i modsætning til det du
> foreslog som tjekker om cookies der gemmes på computeren er tilladt. Men
> princippet er jo det samme og her er det jeg har lavet:
[klip]

Hej Christoffer
Er du sikke på din metode også virker hvis browseren har slået cookies fra ?
Så er det jo intet mindre end genialt
Det er bare synd at man igen skal have fat i servervariables og at Microsoft
har lavet en implementation der gør det lidt "dyrt" at hive dem frem.
En lille ting: Når du ikke sætter expiration på en cookie bliver den vel til
en session cookie, så den metode jeg linker til gør det samme som din, din
er bare meget pænere.

MVH
Allan Ebdrup.



Thygesen (27-02-2001)
Kommentar
Fra : Thygesen


Dato : 27-02-01 11:32

> Hej Christoffer
> Er du sikke på din metode også virker hvis browseren har slået cookies fra
?
> Så er det jo intet mindre end genialt
> Det er bare synd at man igen skal have fat i servervariables og at
Microsoft
> har lavet en implementation der gør det lidt "dyrt" at hive dem frem.
> En lille ting: Når du ikke sætter expiration på en cookie bliver den vel
til
> en session cookie, så den metode jeg linker til gør det samme som din, din
> er bare meget pænere.

Jeg er sikker på at mit script virker hvis man har slået cookies fra, (jeg
har selv testet det). Princippet er jo at den tjekker om
request.servervariables("HTTP_COOKIE") indeholder ASPSESSIONID og hvis den
ikke gør det så må det betyde at browseren ikke accepterer cookies.

Det er bare lidt irriterende at man er nødt til at en response.redirect, for
at kunne tjekke om browseren accepterer cookies. Fordi så vil det jo tage
det længere tid at hente siderne frem for folk som har en browser der ikke
understøtter cookies, hvis man laver det på alle siderne. Ellers kan man jo
lave en frame (evt. iframe) der refresh'er hvert minut eller noget i den
stil. Jeg kan i hvert ikke lige umiddelbart komme på en smartere metode.

Mvh. Christoffer Thygesen



Allan Ebdrup (27-02-2001)
Kommentar
Fra : Allan Ebdrup


Dato : 27-02-01 19:12

"Thygesen" <thyge@get2net.dk> wrote in message
news:3a9b85c8$1@news.carlbro.dk...
[klip]
> Det er bare lidt irriterende at man er nødt til at en response.redirect,
for
> at kunne tjekke om browseren accepterer cookies. Fordi så vil det jo tage
> det længere tid at hente siderne frem for folk som har en browser der ikke
> understøtter cookies, hvis man laver det på alle siderne. Ellers kan man
jo
> lave en frame (evt. iframe) der refresh'er hvert minut eller noget i den
> stil. Jeg kan i hvert ikke lige umiddelbart komme på en smartere metode.

Ahh, jeg var vidst lidt for hurtig da jeg læste din besked, jeg så ikke at
du lavede en response.redirect men en response.write. Jeg trode faktisk du
kunne klare dig uden en response.redirect.
Men du behøver vel kun at response.redirecte aller første gang en bruger
henter en side på din applikation ??! Det er da ret pænt.
Kan du ikke få fat i ASPSESSIONID gennem request.cookies direkte, udenom
servervariables ? Eller er det det samme problem som cookies der læses og
skrives på samme aspside, de ser ud somom de er blevet skrevet ?


Jeg bruge cookie check til sider der kræver at session cookies er slået til,
der kunne man gøre noget i stil med:

cookie = request.servervariables("HTTP_COOKIE")
if InStr(1, cookie, "ASPSESSIONID", 1) <> 0 then
response.redirect "fejlside_ingensessioncookies.asp?from=" & <<hent script
navn or URLencode det>>
end if

på alle sider der kræver session cookies.
og på fejlside_ingensessioncookies.asp kunne du så lave:

if InStr(1, cookie, "ASPSESSIONID", 1) <> 0 then
response.redirect request.querystring("from")
end if
Response.write "Felj - slå session cookies til!"

Det smarte ved din metode er at man ikke behøver skrive en kontrolcookie på
alle sider, det gør IIS automatisk for en (ASPSESSIONID). Så hvis den første
side man kommer på ikke KRÆVER session cookies vil man aldrig blive
redirected, medmindre man faktisk ikke understøtter cookies.

MVH
Allan Ebdrup, 10-4 ApS



Thygesen (27-02-2001)
Kommentar
Fra : Thygesen


Dato : 27-02-01 22:36

> Ahh, jeg var vidst lidt for hurtig da jeg læste din besked, jeg så ikke at
> du lavede en response.redirect men en response.write. Jeg trode faktisk du
> kunne klare dig uden en response.redirect.
> Men du behøver vel kun at response.redirecte aller første gang en bruger
> henter en side på din applikation ??! Det er da ret pænt.

Ja, det er rigtigt det er faktisk kun hvis cookie-tjekket er på den første
side på serveren der bliver åbnet at response.redirect er nødvendigt.

> Kan du ikke få fat i ASPSESSIONID gennem request.cookies direkte, udenom
> servervariables ? Eller er det det samme problem som cookies der læses og
> skrives på samme aspside, de ser ud somom de er blevet skrevet ?

Jeg tror ikke at jeg kan få fat i ASPSESSIONID direkte gennem
request.cookies, fordi request.cookies læser cookies der er gemt på
computeren, mens request.servervariables("HTTP_COOKIE"), viser indholdet af
cookies der ikke gemmes på computeren og jeg er bare interresseret i om den
kan gemme i sessions. Men man kunne vel også godt teste om det er muligt at
gemme en cookie på computeren, det er bare en smule mere besværligt, for så
skal man jo først gemme en lave en Response.Cookies("COOKIE") = "Set" og
derefter se om den indeholder noget og hvis den ikke gør det, så må det
betyde at browseren ikke understøtter cookies der gemmes på computeren.

Man kan jo også lave dobbelt tjek hvor man først tjekker om browseren
accepterer cookies der ikke gemmes på computeren og derefter tjekker om
browseren acceptere cookies der gemmes på computeren. Men der vel ingen
grund til at gøre det mere besværligt en nødvendigt. Begge muligheder kan
nemlig vælges frit i browseren, (i hvert fald i Internet Explorer).

> Jeg bruge cookie check til sider der kræver at session cookies er slået
til,
> der kunne man gøre noget i stil med:
>
> <kode>
>
> Det smarte ved din metode er at man ikke behøver skrive en kontrolcookie

> alle sider, det gør IIS automatisk for en (ASPSESSIONID). Så hvis den
første
> side man kommer på ikke KRÆVER session cookies vil man aldrig blive
> redirected, medmindre man faktisk ikke understøtter cookies.

Ja, det er faktisk ret smart og det script jeg lavede kan faktisk gøres lidt
mere enkelt:

cookie = request.servervariables("HTTP_COOKIE")
if InStr(1, cookie, "ASPSESSIONID", 1) <> 0 then
response.write "Din browser understøtter cookies"
elseif request("mode") <> "check" then
response.redirect "?mode=check"
else
response.write "Din browser understøtter ikke cookies"
end if

Mvh. Christoffer Thygesen



N/A (27-02-2001)
Kommentar
Fra : N/A


Dato : 27-02-01 11:39



Thygesen (27-02-2001)
Kommentar
Fra : Thygesen


Dato : 27-02-01 11:39

".: DME :." <eliaa@usa.net> skrev i en meddelelse
news:4IJl6.21026$PC4.854917@news010.worldonline.dk...
> Tag en kig på denne artikel:
>
http://www.netcoders.dk/articles.asp?mode=show_article&article_id=93&tech_id
> =1
>
> Den viser hvordan man laver en online liste over brugere uden at brnytte
> global.asa.

Tak for det, men kan ikke få det til at virke under IIS/4.0 og han anbefaler
også at man kun bruger det under ISS5.

Så jeg er i gang med at lave mit eget.

Mvh. Christoffer Thygesen



Allan Ebdrup (27-02-2001)
Kommentar
Fra : Allan Ebdrup


Dato : 27-02-01 20:29

"Thygesen" <thyge@get2net.dk> skrev i en meddelelse
news:3a9b8781@news.carlbro.dk...
> ".: DME :." <eliaa@usa.net> skrev i en meddelelse
> news:4IJl6.21026$PC4.854917@news010.worldonline.dk...
> > Tag en kig på denne artikel:
> >
>
http://www.netcoders.dk/articles.asp?mode=show_article&article_id=93&tech_id
> > =1
>
> Tak for det, men kan ikke få det til at virke under IIS/4.0 og han
anbefaler
> også at man kun bruger det under ISS5.
>
> Så jeg er i gang med at lave mit eget.

Hej
Der findes en ikke-optimeret version der kun benytter een application
variabel her:
http://aspfree.com/authors/josh_painter/activeusers.asp
Men den er stadig ikke særligt pænt implementeret, og han benytter en
standard timeout tid på 20 minutter, hvor 2 som du bruger er meget bedre.
Den er dog pænere end den der på Netcoders efter min mening.

Her er nogle kommentare jeg havde til forfatteren af scriptet i en
diskussion vi havde:

---------- start kommentar -------------
Suggestions/comments:

1) One might make this alteration: don't update the "last page view
timestamp" simply do the cleanup first (only once every minute of course)
and the insert afterwards.
Or better yet: Simply insert when the sessionID is not there set expiration
time to 15 minutes and clean up every 5 minutes. This makes your expiration
time about 15 to 20 minutes instead of 20 to 21 minutes at it is now. The
inaccuracy will provide you with 5 times
less running on the cleanup routine.

2) A default setting of 5 minutes timeout would be better. Most users don't
wait more than 5 minutes between page requests. The most correct setting to
use would be an average of the time between a users page views. Use this
possibility, you've already gone to the trouble of implementing a counter
that doesn't rely on the expiration of the users session.

3) Be aware that there might be some issues with scaleability:
If you have 10.000 unique visits in a 20-minute time span your string
would be:
(Len(Session.SessionID)+Len(<<average timestamp>>) +1 ) * 10.000
In your article this is 30 characters * 10.000.
That gives a string of at least 300.000 characters that you:
a) Traverse for each page view to see if the session ID exists (inside an
Application.Lock)
b) Concatenate (redim) every time a new user enters
c) Traverse and modify every minute at some random users page view

4) Why not use a session variable to avoid doing a) more than once per
session?

5) b) Can be changed to linear complexity by allocating more space than
needed by doubling/halving the space as needed. If you use strings then
allocate a string too large and use the Mid function for inserting new data.
Double the size when you need more space.

6) be aware that in a load balanced web farm (This goes for all "Active
Users" counters not just yours),
- The counters would be there.
- Your code would not produce errors.
- The counters would be wrong. (Only count active users on the current
front-end)
Because each front-end has it's own set of application variables.

Hope you can use this feedback,

Kind Regards,
Allan Ebdrup
--------------- slut kommentar ---------

Dertil kommer diskussion om cookies i kombination med IP numre for at sikre
at tælleren ikke tæller op hele tiden når en bruger ikke tillader session
cookies.

MVH
Allan Ebdrup, 10-4
www.ti-fire.dk




Søg
Reklame
Statistik
Spørgsmål : 177511
Tips : 31968
Nyheder : 719565
Indlæg : 6408591
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste