27. marts 2002 - 12:22Der 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
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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.
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.
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?
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.
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...
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.
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...
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?
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.
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}
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.
Synes godt om
Ny brugerNybegynder
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.