Multidesk.be » Forums » PHP » Online/Offline

  • Pagina
  • 1 van 1
0 gasten lezen dit onderwerp.
^ Onderwerp geschreven door Monster op zondag 8 juni 2008 om 13:46:49.
Monster's avatar
Multiviteit: 77
Pinky
Pinky
Heej multidesk,

Ik vroeg me af hoe je een Online/Offline kon maken voor members
als de member zich inlogt is hij natuurlijk online
en als hij uitlogt is hij offline
hoe is dit mogelijk ?

alvast bedankt.
Anton
^ Reactie #1 geschreven door Martijn op zondag 8 juni 2008 om 16:58:47.
Martijn heeft nog geen avatar toegevoegd
Multiviteit: 13785
Beheerder
Niet zo moeilijk. Bij het inloggen van een lid insert je een timestamp, bij het laden van een pagina update je deze timestamp. Vervolgens controleer je of de huidige tijd - timestamp kleiner is dan een bepaald interval; zoja, dan weet je of dit lid online is.
Met vriendelijke groeten,
Martijn Wouters
^ Reactie #2 geschreven door Monster op zondag 8 juni 2008 om 17:52:41.
Monster's avatar
Multiviteit: 77
Pinky
Pinky
hehe wat ? :D sorry niet zo moeilijk zegt ie dan...
nu begrijp ik er nog niks van (blush)
inlog moet iets naar database sturen?

en anders er gewoon uitlezen
en dan huidige tijd min de tijd van login
en hoe bedoel je met interval?
Deze tekst werd het laatst bewerkt voor 7.14 % door Monster op zondag 8 juni 2008 om 17:53:16.
^ Reactie #3 geschreven door SMG op zondag 8 juni 2008 om 17:58:47.
SMG's avatar
Multiviteit: 12000
Moderator
Situatie:
Jij logt in (-> databank registreert jouw tijd)
Jij surft naar een pagina op de site (-> databank registreert jouw tijd)
Jij surft naar de pagina om te controleren wie er online is (-> databank gaat elke persoon nakijken wie van de leden online is. Dit doet het door de constant geregisteerde tijd + interval (een tijd die jij kiest voordat een persoon niet meer als ingelogd beschouwd moet worden - vaak iets van een 5 minuten) => huidige tijd).
Jij surft gedurende 5 minuten niet op de site? Niets wordt in de databank geschreven dus na die 5 minuten zal jij als offline beschouwd worden.
^ Reactie #4 geschreven door fawkes op donderdag 17 juli 2008 om 11:25:18.
fawkes' avatar
Multiviteit: 230
-
-
(volgens mij) wat ze bedoelen ziet er ongeveer zo uit:

Plaats op elke site dit (het handigste is dat je dit plaatst in een site en dat overal include, maar dat is jou keus)
PHP
  1. <?php
  2. $timestamp=mktime(date("H"), date("i"), date("s"), date("m"), date("d"), date("Y"));
  3. // update de timestamp naar de database, moet je zelf even regelen
  4. ?>


Om te controleren of iemand online is kan je deze functie gebruiken (die kan je ook overal bovenaan een pagina includen):
PHP
  1. <?php
  2. function is_online($user){
  3.         $tijd_nu=mktime(date("H"), date("i"), date("s"), date("m"), date("d"), date("Y"));
  4.         $minuten_online=5*60; // 5 minuten
  5.        
  6.         // haal de timestamp uit de database, ook zelf doen
  7.         $timestamp=""; // zelf invullen, ik weet niet hoe jij dat hebt. dit is de timestamp uit de database
  8.        
  9.         $tijds_verschil=$tijd_nu-$timestamp;
  10.        
  11.         if($tijds_verschil < $minuten_online){
  12.                 // gebruiker is afgelopen 5 minuten op de site geweest
  13.                 return TRUE;
  14.         }
  15.         else{
  16.                 // de gebruiker is de afgelopen 5 minuten niet op de site geweest
  17.                 return FALSE;
  18.         }
  19. }
  20. ?>


Om nu te controleren of iemand online is kan je dat op de volgende manier doen:
PHP
  1. <?php
  2. if(is_online($user)){
  3.         echo "Online";
  4. }
  5. else{
  6.         echo "Offline";
  7. }
  8. ?>


Natuurlijk moet je zelf even wat aanpassingen plaatsen om ervoor te zorgen dat er gegevens naar de database worden gestuurd en terug worden gehaald.

Er kunnen best fouten inzitten, want zelf heb ik het niet getest :$:$ maar ik verwacht niet dat het fout is. Maar ik denk dat als je zoiets wilt maken dat je kennis van php goed genoeg is om je verder te helpen ;)
Deze tekst werd het laatst bewerkt voor 2.5 % door fawkes op donderdag 17 juli 2008 om 11:26:08.
-
^ Reactie #5 geschreven door Martijn op donderdag 17 juli 2008 om 11:32:14.
Martijn heeft nog geen avatar toegevoegd
Multiviteit: 13785
Beheerder
Script lijkt mij inderdaad overeen te stemmen met het vermelde concept.

Waarom roep je overigens een mktime() aan om vervolgens de huidige datum samen te stellen? Heb je hier een speciale reden voor? Ik zou zelf gewoon time() gebruiken.
Met vriendelijke groeten,
Martijn Wouters
^ Reactie #6 geschreven door fawkes op donderdag 17 juli 2008 om 12:20:28.
fawkes' avatar
Multiviteit: 230
-
-
om heel eerlijk te zijn heb ik nog niet van time() gehoord. Wel een beetje, maar ik ken mk_time beter dan time(). Heeft idd niet echt een speciale reden en je kan dus ook gewoon time() gebruiken, als hij ten minste hetzelfde weergeeft als mk_time met alle dates erin.
-
^ Reactie #7 geschreven door Martijn op donderdag 17 juli 2008 om 12:53:56.
Martijn heeft nog geen avatar toegevoegd
Multiviteit: 13785
Beheerder
De functie time() genereert een integer die het aantal seconden sinds de UNIX epoch bevat; hetzelfde dus als jou mktime() functie doet met de waarden uit de date() functie zonder tweede parameter :).
Met vriendelijke groeten,
Martijn Wouters
  • Pagina
  • 1 van 1

Snel-antwoordformulier
Toon uitgebreid antwoordformulier Bericht nalezen Bericht plaatsen