Avatar billede thers Nybegynder
27. marts 2002 - 12:22 Der er 16 kommentarer og
1 løsning

Tjek om bruger er connected

Hej!

Jeg har lavet en chat der udelukkende kører fra een fil: "default.asp" derfor er jeg ikke interesseret i løsninger med global.asa eller med DB.

Når en bruger logger ind sættes en nogle sessions og applications variabler.
Hvis brugeren så bare lukker sit browservindue eller surfer videre, uden at trykke "logout" - Hvordan fanger jeg det og logger ham ud (dvs nulstiller nogle applications variabler)?

Da det er en chat, bliver siden refreshed hele tiden.
Jeg har prøvet med:
IF Response.IsClientConnected=FALSE THEN
LogOut()
END IF

Men det virker ikke..?
andre forslag ?

Avatar billede ras2000 Nybegynder
27. marts 2002 - 13:16 #1
Du er nok nød til at bruge noget Client side, jeg kan give et forslag i javascript.
I din body tag skriver du det her:
<body onunload="window.open('logud.asp')">
Så laver du en side der hedder logud.asp, som logger brugeren ud.
Avatar billede ras2000 Nybegynder
27. marts 2002 - 13:17 #2
Men den vil selvfølgelig også køre når brugeren refresher siden. Det ville alt andet lige være nemmere at bruge global.asa, det er vist det den er der til.
Avatar billede excession Nybegynder
27. marts 2002 - 13:46 #3
applicaion variables kommer da også fra global.asa gør de ikke?

-- xs
Avatar billede thers Nybegynder
27. marts 2002 - 14:16 #4
Jeg ved godt at man kan bruge global.asa til det. Men udfordringen ligger i at gøre det uden. Jeg kan godt se ideen med javascriptet . Men som du selv siger bliver det kaldt hver gang siden refreshes. Jeg mener ikke at der er en window.onclose event i javascript?
Avatar billede ras2000 Nybegynder
27. marts 2002 - 14:22 #5
Det ville også være ligemeget, du kan jo bare surfe videre som du selv skriver, og så ville den ikke fyre.
En anden mulighed ville være at køre i frames, hvor den ene frame er usynlig. Den anden frame ville være din almindelige side. Når den usynlige frame unloader, kunne du så køre det script jeg skrev før. Så skal du bare sørge for at det kun er den synlige frame der refresher.
Avatar billede thers Nybegynder
27. marts 2002 - 14:33 #6
Som det er nu er der faktisk to frames, men de refresher begge to.
Jeg tror ikke det er en god ide at sætte det på onunload, det kan jo være at brugeren selv trykker på refresh hvis han synes det går for langsomt...
Avatar billede ras2000 Nybegynder
27. marts 2002 - 14:38 #7
Så tror jeg du er ved at være ude af muligheder.
Men jeg tror altså meget på frames løsningen. Du skal jo så have en tredie frame, som er usynlig, og ikke refresher hele tiden. Hvis man så trykker refresh, kan du måske fange den på en anden måde.
Avatar billede thers Nybegynder
27. marts 2002 - 14:40 #8
Hvad med at teste på window.location og hvis den er noget andet end default.asp så logout() ?
Så mangler jeg bare at fange hvis brugeren lukker vinduet...
Avatar billede ras2000 Nybegynder
27. marts 2002 - 14:42 #9
Det ville være fint, men hvor vile du ligge det script? På den side han muligvis surfer hen til?
Avatar billede thers Nybegynder
27. marts 2002 - 14:44 #10
hehehe , ja jeg hacker bare deres webserver ;o)
Nej du har ret. Jeg ville bare ønske der var en bedre måde end onunload..... Men hvis du poster det som svar får du 100 points ok?
Avatar billede online-help.dk Nybegynder
27. marts 2002 - 14:50 #11
hvis server??
Avatar billede ras2000 Nybegynder
27. marts 2002 - 14:51 #12
Held og lykke med det. Men du kunne sortere det fra i din logud.asp side. Det bliver lidt mindre pænt, men din logud.asp kunne jo tjekke om din chat side var åben eller ej. Det skal gøres Client-side. if(!opener) document.location.href = logudfunktionen.asp, eller noget af den stil.
Avatar billede thers Nybegynder
27. marts 2002 - 15:02 #13
Det hele skal holdes på én side...
Men jeg er ikke med på hvad if(!opener) gør?
Avatar billede ras2000 Nybegynder
27. marts 2002 - 15:06 #14
Hvis du åbner en side med window.open(url) så kan du på den åbnede side kalde det vindue den blev åbnet fra med opener. Jeg er ikke helt sikker på hvordan du skal skrive det, men det er noget i retning af
if (opener.location.href!='default.asp'){log ud}else{lad være med at log ud}
Avatar billede thers Nybegynder
27. marts 2002 - 15:11 #15
ah ok!
Tusind tak for hjælpen !
Avatar billede ras2000 Nybegynder
27. marts 2002 - 15:12 #16
Selv tak. Go påske, nu vil jeg drikke øller!
Avatar billede ras2000 Nybegynder
27. marts 2002 - 15:17 #17
Ok, en sidste en. Denne side tjekker url'en på vinduet der åbner den.
<HTML><HEAD>
<SCRIPT type=text/javascript>
function goerdet(){
if (opener.location.href!="her.htm"){
    alert(opener.location.href);
}else{
    alert("noget");
}}
</SCRIPT>
<BODY onload="setTimeout('goerdet()', 1000)">
</BODY></HTML>
Men hvis jeg surfer over til yahoo.com, så melder den fejl, jeg har ikke lov til at se hvor min bruger har fortsat henad. Men Du kan fange fejlen med en errorhandler, så hvis den melder fejl, så er brugeren smuttet.
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

IT-JOB