login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Aantal leden online

Offline Gamezhoek - 01/05/2006 13:33
Avatar van GamezhoekHTML interesse Hoe kan ik laten zien heoveel leden eronline zijn op mijn site?
Ik werk met sessies. Als je inlogt krijg je een bepaald id mee. Dus stel je id is 15, gebeurt er zeg maar dit:
$_SESSION['login']=15;
Hiermee zou ik bijv. het veld 'online' op 1 zetten, en bij het uitloggen weer op 0.
Zo zou je dus alle 1'tjes bij elkaar kunnen optellen en voila.
Maar, als je je browser afsluit is de sessie vanzelf al weg. Dus kan ik dat veld ook niet op 0 zetten, en blijf je op online staan.
Weet iemand hoe ik dit kan oplossen?

8 antwoorden

Gesponsorde links
Offline Simon - 01/05/2006 13:35 (laatste wijziging 01/05/2006 13:44)
Avatar van Simon PHP expert je maakt een veld last_session ofzo, en telkens als er op een link gedrukt wordt verander je die de time() van dat veld
je maakt een cronjob:
  1. <?php
  2. $time = time() + 300; //300 sec -> 5 minuten
  3. mysql_query("UPDATE users SET online = 0 WHERE last_session < ".$time."") or die("FOUT: ". mysql_error());
  4. ?>
Offline Maarten - 01/05/2006 13:35 (laatste wijziging 01/05/2006 13:36)
Avatar van Maarten Erelid Je moet bij ieder paginabezoek de huidige tijd ergens opslaan in de ledentabel oid.

Dan kan je simpelweg een lijstje afdrukken van leden waar die gelijk is aan, of tot 300 seconden kleiner dan de huidige tijd. Dat zijn dan de leden die online zijn.
Offline BNoise - 01/05/2006 13:36 (laatste wijziging 01/05/2006 13:36)
Avatar van BNoise Nieuw lid Op elke pagina zet je een veld "laatstactief" (alleen bij die gebruiker) op de laatste tijd. In je online-bekijk script pak je alle data, kijk je welke minder dan 5 minuten geleden is, en die tel je allemaal op ;)


Murfy was me weer voor
Offline Gerard - 01/05/2006 13:36
Avatar van Gerard Ouwe rakker Een veld introduceren in je user tabel genaamd 'last active'.
Op elke pagina van je website update je dat veld met de huidige timestamp (NOW() of time()).

Dan kan je gewoon de namen uit de database trekken die binnen de laatste 300 seconden online zijn geweest (5 minuten dus).
Offline Maarten - 01/05/2006 13:36 (laatste wijziging 01/05/2006 13:37)
Avatar van Maarten Erelid Lol, over 4 keer hetzelfde zeggen gesproken 
Offline Gamezhoek - 01/05/2006 14:46
Avatar van Gamezhoek HTML interesse Ik heb nu dit:
  1. <?php
  2. //Leden online:
  3. $lidonline1 = mysql_query("SELECT id FROM users WHERE online > NOW()-600");
  4. $lidonline2 = mysql_num_rows($lidonline1);
  5. if($lidonline2 > 0)
  6. {
  7. $lidonline3 = mysql_fetch_array($lidonline1);
  8. echo "Er zijn <b>".$lidonline3."</b> leden online.";
  9. }
  10. else
  11. {
  12. echo "Er zijn <b>geen</b> leden online.";
  13. }
  14. ?>

Maar er staat nu:
Er zijn Array leden online.

Wat niet echt hoort :S
Er komt wel gewoon in de database de huidige tijd+datum te staan. (Dat stuk staat helemaal bovenaan de website)
Offline Ibrahim - 01/05/2006 14:48
Avatar van Ibrahim PHP expert SELECT COUNT(id) AS aantal FROM users

en die mysqlnumrows weg

en dan $lidonline3 = mysql_fetch_array/assoc['aantal']
Offline Gamezhoek - 01/05/2006 14:53
Avatar van Gamezhoek HTML interesse Het is al opgelost. Ik moest het fetch stukje gewoon weglaten, en niet lidonline3, maar lidonline2 echo'en
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2025 Sitemasters.be - Regels - Laadtijd: 0.198s