[PHP] Aantal personen ingelogd

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Beste mede-tweakers,

Ik heb een profielensite, waar ik een functie in wil hebben zodat je kan zien wie ingelogd is en wie dus online is.

Ik heb echter geen idee hoe ik zoiets moet maken.

Ik had eerst het idee dat wanneer men inlogt, ze weg worden geschreven in een tabel, en als ze uitloggen, ze eruit worden geschreven..

Helaas is niet iedereen zo vriendelijk om zich uit te loggen, dus je krijgt naderhand een volle tabel met leden die allemaal ingelogd zijn, maar die in werkelijkheid niet eens op de site zitten en gewoon te lui waren om uit te loggen.

Hoe wordt zo'n systeem doorgaans gemaakt, en wat voor principe zit erachter? Ik werk met sessie's en cookies (cookies worden pas aangemaakt als de user ingelogd wilt blijven dus als hij die checkbox daarvoor aanvinkt).

Kan iemand mij hierbij op weg helpen, en me misschien vertellen hoe het principe van zo'n systeem in elkaar zit?

Alvast bedankt!

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Je kan toch gewoon het aantal actieve sessions tellen?

Acties:
  • 0 Henk 'm!

  • Daspeed
  • Registratie: Maart 2001
  • Laatst online: 22:14
Per user bijhouden wat het tijdstip was van de laatst bezochte pagina. Dan kun je over een tijdspanne van nu tot 5 min geleden bijv. de users ophalen.

Acties:
  • 0 Henk 'm!

Verwijderd

Erkens schreef op vrijdag 17 augustus 2007 @ 15:04:
Je kan toch gewoon het aantal actieve sessions tellen?
Psies... Als je al met sessies werkt dan weet je ook dat je een sessie kunt laten verlopen na een bepaalde tijd. Gewoon het aantal actieve sessies tellen inderdaad.

Helemaal 100% accuraat wordt zoiets nooit.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Erkens schreef op vrijdag 17 augustus 2007 @ 15:04:
Je kan toch gewoon het aantal actieve sessions tellen?
Ik zou niet weten hoe ik dat moet doen.

Bestaat daar in PHP een functie voor om alle actieve sessie's op te tellen?

Acties:
  • 0 Henk 'm!

  • Kwastie
  • Registratie: April 2005
  • Laatst online: 19-09 10:42

Kwastie

Awesomeness

wat je ook kunt doe is elke keer als de session start een variable met 1 te verhogen en bij session end de variable met 1 te verlagen.. teminste zo werkt het in ASP 2.0. PHP zou wel niet veel anders zijn

When I get sad i stop being sad and be awesome instead


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik denk dat het sessie's tellen wel een goede optie is, alleen weet ik niet hoe ik dat moet doen, met welke functie? Zijn er voorbeelden voor op het web? Heb al even ge-googled maar het is nogsteeds niet erg duidelijk voor mij.

Acties:
  • 0 Henk 'm!

  • Kwastie
  • Registratie: April 2005
  • Laatst online: 19-09 10:42

Kwastie

Awesomeness

ik wil geen reclame maken maar bezoek anders eens www.phpfreakz.nl of www.phphulp.nl daar staan waarschijnlijk wel wat voorbeelden

When I get sad i stop being sad and be awesome instead


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Daar keek ik al rond (ik ken die sites ook) maar zal er nog eens kijken dan.

Acties:
  • 0 Henk 'm!

  • Crysania
  • Registratie: September 2000
  • Laatst online: 23:22
als je in je tabel de user + tijd laatste actie opslaat werkt het toch?

elke keer als een user een nieuwe pagina opvraagt update je de tijd.

om de actieve users op te vragen doe je een query over alle laatste acties van de laatste 5/10 minuten.

Acties:
  • 0 Henk 'm!

  • _js_
  • Registratie: Oktober 2002
  • Laatst online: 18-08 21:31
Als je je sessies in een database opslaat kun je ze makkelijk tellen, zoals eerder gezegd bijhouden wanneer de laatste actie is geweest per sessie, en dan alle sessies tellen die een actie in de laatste x minuten hebben. De ingebouwde PHP sessies kun je niet tellen.

Acties:
  • 0 Henk 'm!

  • Japidoff
  • Registratie: November 2001
  • Laatst online: 25-08 15:54

gang is alles


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ok, bedankt iedereen, hier kan ik mee verder :)

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Verwijderd schreef op vrijdag 17 augustus 2007 @ 15:17:
Ik zou niet weten hoe ik dat moet doen.

Bestaat daar in PHP een functie voor om alle actieve sessie's op te tellen?
Standaard met PHP sessions niet (althans, als je niet in je temp dir files wilt gaan tellen :X ), maar zodra je de sessions zelf beheerd (al dan niet in combinatie met de standaard PHP sessions) dan kan dat natuurlijk wel :)
Verwijderd schreef op vrijdag 17 augustus 2007 @ 15:16:
Helemaal 100% accuraat wordt zoiets nooit.
De vraag is ook of dit ook echt noodzakelijk is, zeker voor iets eenvoudigs als een "profielensite" zal het niemand wat uitmaken als er een paar meer of minder staan dan dat het daadwerkelijk is.
_js_ schreef op vrijdag 17 augustus 2007 @ 16:52:
De ingebouwde PHP sessies kun je niet tellen.
Dat is dus niet geheel waar. Je kan bijvoorbeeld met session_set_save_handler() dit zelf bijhouden.

Acties:
  • 0 Henk 'm!

  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 21-02 08:50

BikkelZ

CMD+Z

Bij iedere pageload van een ingelogde user overschrijf je de laatste regel, bij iedere keer dat je de actieve users inlaadt laad je iedereen die bijvoorbeeld in de afgelopen vijf minuten nog weggeschreven is in die tabel.

iOS developer


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb gister een systeem gescript in php, wat best goed werkt.

Als iemand ingelogd is, bij elke pagina die hij bezoekt wordt de usertijd weggeschreven in de database. Je komt dan te staan als 'ingelogd'. Als blijkt dat de usertijd in de database 5 minuten afwijkt van de oorspronkelijke tijd, dan ben je eruit geschreven.

Beetje riskant, want stel dat iemand 10 minuten lang niet op de site zit? Dan staat hij niet als ingelogd terwijl hij het eigenlijk wel is...maar zodra hij dan weer op iets klikt wordt zijn usertijd geupdate en staat hij weer als ingelogd aangegeven.

En bij het uitloggen maak ik het veld in de db gewoon leeg, anders is het gaar dat als je uitlogt je nog 5 minuten moet wachten voordat je jouw naam weg ziet gaan :P

Systeem werkt best goed, afgezien van dat vb iemand niet op de site surft. Maar dat maakt me niet uit, het is geen belangrijke functie zoals hier al gezegd werd, en als het zo werkt vind ik het best.

Bedankt voor alle reacties :)
Pagina: 1