Avatar billede d3c Nybegynder
02. september 2006 - 18:25 Der er 15 kommentarer og
2 løsninger

Bruger online eller ej - den rigtige approach

Hej eksperter,

Hvordan ville I vælge at lave en status for, hvorvidt en bruger er online eller ej? Lige nu ser jeg selv følgende mulighed:

Når brugeren logger ind, sættes han/hun til værende online. Når brugeren logger ud, sættes han/hun til værende offline. Problemet med denne metode er blot, at man ikke kan være sikker på, at brugeren nu også bruger "Log ud"-knappen og ikke bare lukker browseren.

Hvordan ville I angribe denne problemstilling? ;-)
Avatar billede Slettet bruger
02. september 2006 - 18:28 #1
Du kan sætte en tidsgrænse på 5 minutter. Hver gang brugeren loader siden, refreshes tidsgrænsen, og brugeren sættes til online igen.
Avatar billede Slettet bruger
02. september 2006 - 18:30 #2
Altså sætte et tidspunkt i databasen til time(), og tjekke om det er under 5 minutter inde i fremtiden - Så er han online.
Avatar billede shooka Nybegynder
02. september 2006 - 18:31 #3
Lige netop, og hvis brugeren ikke har været aktiv i 5 min., så ændres status til offline. Kunne evt. klares med NOW()
Avatar billede d3c Nybegynder
02. september 2006 - 18:32 #4
Ville det ikke give en enorm database trafik at skulle opdatere et timestamp for hver bruger, hver gang en side loades? Eller er det bare løsningen?
Avatar billede shooka Nybegynder
02. september 2006 - 18:33 #5
if($datid >= $nutid)
{
// Status ændres til offline
}
else
{
$datid = $nutid;
}
Avatar billede shooka Nybegynder
02. september 2006 - 18:34 #6
Hvis det skal være mest brugervenligt, så bør tiden sættes til 20 min.
Avatar billede shooka Nybegynder
02. september 2006 - 18:35 #7
Så behøver brugerne heller ikke at opdatere siden, hvis de er i gang med noget vigtigt :)
Avatar billede d3c Nybegynder
02. september 2006 - 18:36 #8
Smid et svar, begge to. Jeg anvender den løsning :-)
Avatar billede shooka Nybegynder
02. september 2006 - 18:37 #9
Ellers tak, behold du dem.
Avatar billede shooka Nybegynder
02. september 2006 - 18:39 #10
Så kan du bruge dem på et andet spørgsmål senere :)
Avatar billede d3c Nybegynder
02. september 2006 - 18:39 #11
Cool, takker ;-) Så mangler jeg bare fra wicez...
Avatar billede shooka Nybegynder
02. september 2006 - 18:45 #12
Du skal huske, at NOW() tæller sekunder, og at 20 minutter er 1200 sekunder.
Avatar billede Slettet bruger
02. september 2006 - 18:52 #13
d3c, lad os dele pointsne så :)

Det er nemmest, for egen overskuelighed og læservenlighed senere, at bruge time()*60*60*20 i stedet for 1200 senere. - Selvom det naturligvis er nøjagtig det samme.
Avatar billede Slettet bruger
02. september 2006 - 18:53 #14
shooka, jeg tror også det er lidt flere sekunder :)
Avatar billede Slettet bruger
02. september 2006 - 18:53 #15
Hov.. Nej det er mig der blander det. Det er jo ikke 20 timer. Jeg undskylder ;o)
Avatar billede d3c Nybegynder
02. september 2006 - 19:21 #16
Shooka: Det er jeg godt klar over :-)

Wicez: Jeg kan godt holde styr på det med NOW()
Avatar billede Slettet bruger
02. september 2006 - 19:42 #17
Tak for points.

Ja naturligvis; det er vist mig der roder rundt i det nu.
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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