[php] probleem met uitloggen, user tracking

Pagina: 1
Acties:
  • 407 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een website met standaard user/password login systeem.
De gegevens van de huidige gebruiker worden opgeslagen in een sessie en in de database.

Op deze manier kunnen andere gebruikers zien wie er online is. ('online' vlaggetje in de users tabel).

Die flag moet natuurlijk op false gaan wanneer de gebruiker de website verlaat.
Dit zou natuurlijk kunnen door een logout knopje.

Probleem is echter dat wanneer de gebruiker niet uitlogt en de browser afsluit, de flag op online blijft staan. Dat is niet de bedoeling.

Ik kan bij de "onunload" van de body wel een popup maken met een automatische logout, maar deze wordt dan ook aangeroepen bij elke link of refresh.

Heeft iemand hier een alternatief / oplossing voor?

[php/mysql/apache op linux. Geen systeem rechten op de server]

Acties:
  • 0 Henk 'm!

  • DeverauX
  • Registratie: Februari 2002
  • Niet online

DeverauX

Focus is everything

Het record waarin je vastlegd of iemand online is bij elke request updaten en de datum bijwerken. Vervolgens kan je een delete query draaien om alle bezoekers die de laatste x min. geen request meer hebben gedaan te verwijderen.
Weliswaar niet realtime, maar wel een van de enige mogelijkheden. :)

[ Voor 1% gewijzigd door DeverauX op 26-01-2004 20:01 . Reden: typo ]

...whatever was distasteful or unpleasant or uncomfortable or painful - music could always soothe that.
All you have to do is reach out to beauty.
Quincy Jones


Acties:
  • 0 Henk 'm!

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

DeverauX schreef op 26 januari 2004 @ 19:59:
Het record waarin je vastlegd of iemand online is bij elke request updaten en de datum bijwerken. Vervolgens kan je een delete query draaien om alle bezoekers die de laatste x min. geen request meer hebben gedaan verwijderen.
Weliswaar niet realtime, maar wel een van de enige mogelijkheden. :)
Dit is gewoon de enige oplossing :)

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Acties:
  • 0 Henk 'm!

Verwijderd

Voor dit soort "online" scriptjes kun je het beste ff kijken op www.phpreakz.com.
Het systeem dat de users zelf op "logout" moeten klikken om hun "online" status weg te werken is een beetje omslachtig.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
tnx _/-\o_

Acties:
  • 0 Henk 'm!

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
Spider.007 schreef op 26 januari 2004 @ 20:01:
[...]


Dit is gewoon de enige oplossing :)
Nee hoor, er is nog een efficientere oplossing: de datum van de sessie-files controleren (als je een login met sessies heb). Dan moet je van iedere bezoeker dus alleen 1x de naam van de sessie opslaan en dan kun je gewoon kijken wanneer de sessie-file voor het laatst gewijzigd is om te weten wanneer de laatste activiteit van de gebruiker was. Dat scheelt een UPDATE bij iedere klik die je doet

Acties:
  • 0 Henk 'm!

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

marty schreef op 26 januari 2004 @ 21:16:
[...]


Nee hoor, er is nog een efficientere oplossing: de datum van de sessie-files controleren (als je een login met sessies heb). Dan moet je van iedere bezoeker dus alleen 1x de naam van de sessie opslaan en dan kun je gewoon kijken wanneer de sessie-file voor het laatst gewijzigd is om te weten wanneer de laatste activiteit van de gebruiker was. Dat scheelt een UPDATE bij iedere klik die je doet
Dit is volgens mij even 'efficient' als het idee van DeverauX; met als enig verschil dat je de last-modified dat niet vanuit de database, maar van het filesysteem haalt :) Het scheelt inderdaad wel de update; deze duren bij mij gemiddeld 0.0005749 sec :P

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Acties:
  • 0 Henk 'm!

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
Spider.007 schreef op 26 januari 2004 @ 21:22:
[...]


Dit is volgens mij even 'efficient' als het idee van DeverauX; met als enig verschil dat je de last-modified dat niet vanuit de database, maar van het filesysteem haalt :) Het scheelt inderdaad wel de update; deze duren bij mij gemiddeld 0.0005749 sec :P
plus dat je tabel gelocked is :)

[ Voor 3% gewijzigd door marty op 26-01-2004 21:28 ]


Acties:
  • 0 Henk 'm!

Verwijderd

als je nou eens heel veel views hebt...

Acties:
  • 0 Henk 'm!

Verwijderd

Ik heb hetzelfde probleem. Ik zie dat het voorgaande dateert van 4 jaar geleden. Is er intussen een efficiëntere oplossing bekend? Dat wanneer een user zijn browser sluit, zijn online-status meteen verdwijnt? Zoals facebook en myspace en dergelijke wel kunnen...

Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Als andere mogelijkheid zou je kunnen kijken naar een ajax-heartbeat, maar dit kost je wel veel ajax-calls...

Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 14:53

MueR

Admin Tweakers Discord

is niet lief

Is het nuttig voor je toepassing? Als het om een "normale" website gaat, is het gewoon niet nuttig.

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
Je hebt toch een Javascript functie, onUnload oid? Daarmee een ajax scriptje aanroepen en klaar :)

Acties:
  • 0 Henk 'm!

  • Andre-85
  • Registratie: April 2003
  • Niet online

Andre-85

Sid

Is het niet veel handiger om in plaats van een online boolean een last_visited timestamp in je database op te nemen? Dan heb je de mogelijkheid om alle users te selecteren die bijvoorbeeld de laatste 5 minuten een pagina hebben geladen en deze als 'online' weergeven.
In een cronjob zou je de sessie tabel ieder halfuur op kunnen schonen aan de hand van dit veld.

edit:
anders zeg ik even hetzelfde als DeverauX, iets met draad lezen voor je blaat :X

[ Voor 11% gewijzigd door Andre-85 op 28-05-2008 08:52 ]

Lorem
Whenever we feel the need to comment something, we write a method instead. - Martin Fowler
People who think they know everything really annoy those of us who know we don't - Bjarne Stroustrup


Acties:
  • 0 Henk 'm!

  • steffex
  • Registratie: Augustus 2003
  • Laatst online: 12-08 00:24
het beste wat je denk ik kan doen, is het session id op te slaan in de database. Daarnaast kun je telkens met dit session id je database updaten als de gebruiker naar een andere pagina gaat. Kun je ook meteen zien waar de gebruikers zich bevinden op de website. Zodra de lastupdate vervolgens ouder dan 15/30 min is, kun je in jou situatie er wel vanuit gaan dat de gebruiker zijn browser heeft afgesloten.

Acties:
  • 0 Henk 'm!

  • AW_Bos
  • Registratie: April 2002
  • Laatst online: 11:52

AW_Bos

Liefhebber van nostalgie... 🕰️

Ik geloof dat Hyves dat realtime doet? Klopt dat?
Gebruiken die Comet o.i.d., iemand die dat weet?

En ja, DeverauX's oplossing gebruik ik ook voor mijn projecten :).

[ Voor 3% gewijzigd door AW_Bos op 28-05-2008 10:42 ]

Telecommunicatie van vroeger
🚅Alles over spoor en treintjes

Pagina: 1