Avatar billede prof2 Nybegynder
21. oktober 2001 - 17:42 Der er 22 kommentarer og
2 løsninger

Registrer log-off...

Jeg er ved at lave en chat, og har brugerne i en Access database... Jeg skal helst have et felt i databasen der fx hedder online (som indikere om brugeren er på chatten).
Så skal jeg også have et felt som indeholder den tid som brugeren har været på chatten.

Mit problem er ikke koden, men teorien bag...

For når en bruger logger på, ændres online i databasen til ja. Og hvis man logger af (ved at klikke på linket logaf) ændres online til nej.

Men hvad nu når brugeren bare lukker browser vinduet, så kan jeg jo ikke registrer i databasen at han er offline og ændre online til nej. Og jeg vil heller ikke kunne nå at tilføje den tid han/hun har været på...

Håber i har nogle forslag til hvad jeg kan gøre... Jeg skal ikke bruge kode (det kan jeg sagtens selv), men jeg skal bruge ideen til at få det til at virke..

Alt hjælp er modtagelig...
Avatar billede cyberinet.com Nybegynder
21. oktober 2001 - 17:59 #1
Kan du ikke bare kombinere det med et lille javascript som popper et lille vindue op når siden lukkes og den lille popup kan så skrive til databasen at brugeren er lukket ud.
Avatar billede zed_one Praktikant
21. oktober 2001 - 18:00 #2
hvad med et af de der \"hvis brugeren lukker browseren\" kode som alle de porn sites bruger til reklamer hehe...så ku den åbne en lille side med et logoutscript som så lukker sig igen efter udførelse
Avatar billede zed_one Praktikant
21. oktober 2001 - 18:00 #3
arg
Avatar billede zed_one Praktikant
21. oktober 2001 - 18:00 #4
man skal være hurtig :)
Avatar billede bernhof Nybegynder
21. oktober 2001 - 18:01 #5
yep - og så bare for en sikkerheds skyld åbne det uden for skærmen så brugeren ikke lægger mærke til at det popper op, og derfor ikke lukker det inden det har nået at skrive til databasen!
Avatar billede mgade Nybegynder
21. oktober 2001 - 18:45 #6
http://www.eksperten.dk/spm/123556 der er et link til en chat der netop gør det, og i \"Sitevurdering\" kan du finde min løsning (http://www.eksperten.dk/spm/122243)
Avatar billede 2-maz Nybegynder
21. oktober 2001 - 20:47 #7
Så kan du indsætte det her:
header:
<script language=\"JavaScript\">
<!--
function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}
//-->
</script>

i body:
onUnload=\"MM_openBrWindow(\'dimsside.asp\',\'\',\'width=10,height=10\')

også påden side afvikler du dine asp koder og
indsætter dette i bodyen:
onLoad=\"window.close();\"
Avatar billede 2-maz Nybegynder
21. oktober 2001 - 20:47 #8
Husk at afvikle dine script øverst i documentet før bodyen......
Avatar billede thecodeman Nybegynder
21. oktober 2001 - 20:55 #9
Hvis du laver en side med en kort udløbstid, kan du styre det med session.end kommandoen, idet den vil blive kaldt når man forlader scriptet.
Avatar billede thecodeman Nybegynder
21. oktober 2001 - 20:56 #10
Jeg har faktisk noget kode liggende for det et sted, hvis du skulle være interesseret.
Avatar billede mri Nybegynder
21. oktober 2001 - 21:28 #11
Du kan bruge global.asa filen til at registrere hvornår en bruger lukker browservinduet eller timeouter.

<SCRIPT LANGUAGE=VBSCRIPT RUNAT=Server>
Sub Session_OnEnd
Fjern brugeren fra databasen her
End Sub
</SCRIPT>

Gem det i en fil, som du kalder global.asa og lægger i roden af dit website.
Det andet er noget lort at begynde på, så er der ingen som i længden gider bruge din chat.

Mvh
MRI

</SCRIPT>
Avatar billede prof2 Nybegynder
22. oktober 2001 - 13:32 #12
Jeg tror ikke sådan et javascript vil hjælpe, da hvis nu brugerens logger direkte af nettet... Så vil det side javascriptet viser jo ikke skrive til databasen... Fordi brugeren er offline...

Thecodeman> Jeg er meget interesseret... Da det der session.end, lyder meget godt... For der er uafhængigt af om brugeren er offline... Du må meget gerne skrive det kode her (da det vist ikke er lovligt at du sender det over email) !!
Avatar billede mri Nybegynder
22. oktober 2001 - 13:41 #13
Der er vist nok ikke en kommando, som hedder session.end, men der er en event, som hedder Session_OnEnd, der kaldes i global.asa filen.

Ref til global.asa:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iisref/html/psdk/asp/vbob12d0.asp

Hvis du kigger nærmere på mit tidligere svar, vil du se, at det nok er det som thecodeman refererer til.

Du skal blot skrive koden til hvordan brugeren logges af i databasen.

Gem det hele som en fil, der hedder global.asa, og lægge den i roden - så kører du.
Avatar billede thecodeman Nybegynder
22. oktober 2001 - 13:56 #14
Jeg må vist bøje mig og give mri ret. Jeg har tænkt nærmere over det, og fundet ud af at det jeg villge øre ikke kunne lade sig gøre, derimod er det ekstremt nemt at lave det på MRIs måde! I global.asa laver du en session_OnStart og Session_OnEnd event, der ændre status i en database. Undskyld hvis jeg gav falske forhåbninger.
Avatar billede mri Nybegynder
22. oktober 2001 - 14:03 #15
Når du nu har gang i global.asa, så kunne du jo egentligt ligeså godt lave det hele i global.asa med application og session events. Så kommer du helt udenom databasen - måske.


Avatar billede thecodeman Nybegynder
22. oktober 2001 - 14:08 #16
man kan jo også lave det sådan at man ved session_onstart gemmer ens navn i en applikationsvariabel, med navnene på alle dem der er online, og ved session_onend, sletter man navnet fra strengen igen!

sub Session_OnStart
  Application.lock
  Application(\"currentusers\") = Application(\"CurrenUsers\")&\" , \"&Session(\"username\")
  Application.unlock

så skal den bare slettes ved en lignende OnEnd event
Avatar billede thecodeman Nybegynder
22. oktober 2001 - 14:10 #17
jeg glemte lige en End Sub
Avatar billede prof2 Nybegynder
22. oktober 2001 - 18:00 #18
Jeg kan ikke gøre det med Application variabler, da det er en (meget) avanceret chat jeg laver, med flere rum, og ting og sager... Men tak...

Jeg tror jeg vil bruge global.asa måden, men kan jeg i Session_Onend eventen bruge en session variable, som hedder session(\"user\")... Så jeg kan se hvem det er der logger af?
Avatar billede prof2 Nybegynder
22. oktober 2001 - 18:03 #19
mgade> Kan ikke finde noget der kan bruges i dine links...
Avatar billede prof2 Nybegynder
22. oktober 2001 - 18:07 #20
mri> Ved du om Session_OnEnd også køres hvis en session(bruger) lige pludselig ikke er på serveren mere, fx er sessionen logget af nettet uden at lukke browseren... Eller går der så lidt tid, og så får sessionen timeout ??
Avatar billede mri Nybegynder
22. oktober 2001 - 18:11 #21
Den fanger både, når en bruger lukker vinduet og når en bruger timeouter
Avatar billede prof2 Nybegynder
22. oktober 2001 - 18:15 #22
Yes. Men får sessionen så timeout, når brugeren logger direkte af nettet (derved serveren)? Eller glemmes sessionen bare?
Avatar billede mri Nybegynder
22. oktober 2001 - 18:20 #23
Det er jeg ikke klar over - det må du teste...
Avatar billede prof2 Nybegynder
22. oktober 2001 - 18:24 #24
Yesyes. Det skal nok virke... Ellers får jeg den til det... Du deler points med thecodeman 85/15.. Tak for hjælpen.. Global.asa var det jeg skulle høre..
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