Udfør logud funktion når vindue lukkes

Tags:    php session logout window close

Hej Udviklere :)

Jeg har login formel som indsætter en række i en tabel i SQL med Brugernavn så man kan se hvem der er online. Når man så trykker på logud så sletter den rækken igen så den viser man ikke er online længere. Mit problem er så at hvis man bare lukker vinduet (X'er det ned) så står man stadig online.

Nogen der ved hvordan man udfører "log out" når brugeren lukker vinduet? Tænker det er noget med Javascript?



9 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 3 karma
Sorter efter stemmer Sorter efter dato
Er det ikke bedre med et andet slags check? Evt. et der ikke er klient afhængig.

F.x. hvergang der bliver kigget på brugerlisten, kunne der laves et db-kald der sletter alle rækker der er ældre end XX minutter.



Indlæg senest redigeret d. 14.09.2011 14:45 af Bruger #955
Som Stefan siger kunne en ide f.eks. være

Du kan evt. indsætte et tidsstempel når brugeren logges ind, også hver gang brugeren klikker rundt på din side, opdateres tidstemplet.

Du kan nu lave en PHP funktion der også hver gang siden opdateres (brugeren klikker rundt) kigger alle tidsstemplerne igennem, og hvis tidsstemplet er mere end 5 minutter gammelt f.eks, så sletter du bare brugeren fra rækken.

Dette kunne da være en måde at gøre det på :)



Indlæg senest redigeret d. 14.09.2011 14:55 af Bruger #4487
Er nu også mere til Stefans løsning, men du kan lave noget i den her stil tror jeg.. ikke testet.

jquery kode
Fold kodeboks ind/udJScript kode 


logout.php
Fold kodeboks ind/udPHP kode 




Går ud fra du laver login med session, så vil jeg gå ud fra du kan opdatere, når sessionen udløber.. Mon ikke der er en funktion til dette ? Mener at man kan gøre dette i global.aspx ?



... i global.aspx ?

Der er vidst et php tag på denne tråd

:)



Går ud fra du laver login med session, så vil jeg gå ud fra du kan opdatere, når sessionen udløber.. Mon ikke der er en funktion til dette ? Mener at man kan gøre dette i global.aspx ?

tror ikke php har den function.

måske du kan lave noget med et crowjob og sessionid i databasen så kan du løbe dem igemmen og slette dem der er udløbet.

så når du logger ind sætter du brugers tildelte sessionid i databasen, hvert x interval kigger du så om de stadig findes hvis ikke bliver det slettet.




Det mest normale, og i øvrigt nemmeste, er at gøre sådan som Stefan skriver i sit oprindelige indlæg.

Her på Udvikleren gør vi i stedet det at der kører en JavaScript timer som sender et signal til serveren hvert 30. sekund. Det gør at brugeren rent faktisk vil stå som aktiv så længe browser vinduet er åbent, og lige så snart det lukkes, ja så stopper deres ping signal og en anden brugers ping signal vil sørge for at fjerne de brugere som ikke har sendt et ping i X antal sekunder (fx 60). Det kan gøres ret let med fx jQuery :)

Mvh.

Kasper (TSW)



@Stefan ligger mig bare til at sove ;=)
Hårdt med en windows 8 nat :p



Du skal Hvidt bruge en onunload funktion i body og så få den til at starte logout funktionen ved hjælp af javascript <body onunload "javascript" >
http://www.jguru.com/faq/view.jsp?EID=34927



t