Avatar billede centauri Nybegynder
27. januar 2001 - 16:01 Der er 9 kommentarer og
2 løsninger

Problem med User Online

Jeg har et stort problem med et script jeg har fået der viser hvilke brugere der er online på en side.
Det virker fint nok med at sætte brugerne online så snart de logger sig ind. Problemet er når de skal sættes Offline igen idet de forlader siden.
Lige nu er det lige meget om brugere er på siden eller hvad så bliver personen sat offline idet Session variablen udløber og det dur ikke.
Jeg har nu ste lidt mere på  nogle sider der har det jeg ønsker det er bla. www.dating.dk www.netdate.dk og www.webdate. Der ligger man sig ind og så er man stat som online og så idet man forlader deres side elelr lukkere bowseren ned popper der et ekstra windue op der så båenbart lige sætter en offline igen og lykker sig selv igen.
Hvordan kan jeg så lavet sådan noget til min egen side.
Det man måske være relavant at vide at jeg bruger en include fil på hver side er checker om man er logget ind inden man får lov til at se de pågælende sider.

Dette er det script jeg har sået der da også virker nogenlunde.
global.asa
----------

sub Application_OnStart
    Application.lock
    Application(\"OnlineUsers\") = \",\"
    Application.unlock
end sub

sub Session_OnEnd
    Application.lock
    Application(\"OnlineUsers\") = Replace(Application(\"OnlineUsers\"), Session(\"login\") & \",\",\"\")
    Application.unlock
end sub

det her i dit login script:

    Sub AddOnlineUser(login)
        Application.Lock
        Application(\"OnlineUsers\") = Application(\"Onlineusers\") & login & \",\"
        Application.UnLock
    End Sub
------------------------------
Ste bruger Online med :
call AddOnlineUser( \"brugernavnet\" )

Check om bruger en online.

function Online(user)
        dim ok
               
        ok=\"no\"
        if instr(Application(\"OnlineUsers\"),user) then ok=\"yes\"
   
        Online=ok
    end function

Online(user)

Håber virkelig der er nogen der kan hjælpe mig med det her, og ligger da også gerne flere points i puljen hvis det er en stærrere opgave.
Avatar billede bjarke-b Nybegynder
27. januar 2001 - 16:02 #1
Du kan lukke brugeren´s session med:
session.abandon
Avatar billede lp Nybegynder
27. januar 2001 - 16:06 #2
OK, du skal lave et frameset og i den ene <frameset> skal du indsætte dette:
OnBeforeUnload=\"self.window.open(\'logud.asp\',\'LOGUD\',\'left=0,top=0,height=10,width=10,resizable=no,status=no,toolbar=no,menubar=no,location=no\')\">

i filen logud.asp skal der så stå:

<html>
<body onLoad=\"java script:this.window.close\">
<%
Session.Abandon
%>
</body>
</html>

så skulle det gerne køre!
Avatar billede lp Nybegynder
27. januar 2001 - 16:09 #3
this.window.close kan muligvis nøjes med: window.close();
Avatar billede stringbuffer Nybegynder
27. januar 2001 - 16:39 #4
for at sørge for at brugeren ikke timer ud kan du lave en lille \"pinger\" på din side, dvs noget, der requester et script på din server, ligemeget hvilken, den vil opdatere brugerens session alligevel.

her er et forslag til et script, den laver så så lidt som man kan forestille sig:
scriptets navn, f.eks. ping.asp
<% Response.Status=\"204\" %>
status koden 204 fortæller browseren at der ikke er noget data at hente.

på den side, du gerne vil have brugeren til at være registreret som online, laver du noget i den stil:

<script>
var pinger = new Image;
setInterval(\"pinger.src=\'ping.asp\'\", 60000)
window.onunload=function(){open(\'logaf.asp\',\'\',\'toolbar=0,location=0,width=50,height=50\') }
</script>

hvor indeholdet at logaf.asp kan være noget i stil med:

<% Session.Abandon %>
<script>close()</script>
Avatar billede stringbuffer Nybegynder
27. januar 2001 - 16:43 #5
Nå ja, hvis du gerne vil have brugere, der mister forbindelsen, til at time ud forholdsvis hurtigt kan du tilføje linien
Session.Timeout = 1
i din Session_OnStart funktion
dette giver timeout på 1 minut, men i praksis vil det nok tage lidt længere tid.
Avatar billede centauri Nybegynder
29. januar 2001 - 07:41 #6
>stringbuffer 
Jo det virker sørme fint det du kom med der.
Så er det bare 2 små ting.
For det første så skal jeg jo så ahve det script på alle mine sider der kræver at man er logget ind. men idet man klikekr på en link på den ene side og går over på en anden så kommer den jo op med den logaf ting. Det er jo ikke så heldigt.
Det skulle den helst gøre idet man helt forlader min side elelr det der ligger på mit domæne hvis det da i det hele taget kan lade sig gøre.

Og så ville jeg meget gerne have forklaret lidt kort hvad de linjer i scriptet egentlig gør.
Avatar billede centauri Nybegynder
29. januar 2001 - 10:03 #7
HAr fundet en måde det kan løses på og der er ved at lave en side med frames så bliver det ikke indlæst hver gang.
Men såe r problemet bare når man refresher siden så kører den også logaf.asp kan man på en elelr anden måde i sit script checke om siden bliver reloadet så den ikke kører den linje af scriptet.
Altså linjen :
window.onunload=function(){open(\'logaf.asp\',\'\',\'toolbar=0,location=0,width=50,height=50\') }
Avatar billede centauri Nybegynder
29. januar 2001 - 10:29 #8
Ok det ene problem fik jeg selv løst med OnBeforeUnload

Så det jeg mangler nu er bare en lille forklaring om de her 2 linjer, oh hvad de egentlig gør.

var pinger = new Image;
setInterval(\"pinger.src=\'ping.asp\'\", 60000)
Avatar billede stringbuffer Nybegynder
01. februar 2001 - 13:41 #9
den requester bare ping.asp så serveren bliver nødt til at udføre hvad der er i det - og derved opdatere den enkelte session så den ikke kan time ud.
Avatar billede stringbuffer Nybegynder
01. februar 2001 - 13:44 #10
egentlig er der ikke så meget brug for at køre den dér logOff-dims, hvis bare du kan leve med at brugeren først bliver noteret offline 1-2 minutter efter personen har forladt din side. så skal du bare sætte Session.Timeout=1 (1 minut, det allermindste man kan) og nøjes med at lave ping.
Avatar billede centauri Nybegynder
23. februar 2001 - 08:06 #11
Underligt nok så virker det her ikke ordentlig hos mig mine sesions timer nu alligevel ud og sætter mine brugere online.
Så jeg lukker spørgsmålet igen men fordeler lige pointene lidt efter hvor brugbare folks svar var.
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