login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Sitemasters , online users

Offline Sc0tTy - 09/01/2007 15:46 (laatste wijziging 09/01/2007 15:46)
Avatar van Sc0tTyPHP interesse Ik ben zelf bezig met een online users script , wat ik nu heb is een functie die door de index word opgeroepen zodra hij word geladen dus elke keer met een page hit van een gebruiker :

  1. function update_online() {
  2.  
  3. // Gebruiker toevoegen
  4. mysql_secure_query( "INSERT INTO user_online ( user_id , date ) VALUES ( ? , ? )" , check_status( 'check' , 'id' ) , nl_time() );
  5.  
  6. // Tijd min 5 minuten
  7. $time = nl_time() - 300;
  8.  
  9. // Mensen die al minder dan 5
  10. mysql_secure_query( "DELETE FROM user_online WHERE date < ?" , $time );
  11. }


ik dacht er eerst aan om cronjob te draaien maar zo word het ook upgedate.

Ik vroeg me af hoe sitemasters dit doet en of hun methode beter is.

9 antwoorden

Gesponsorde links
Offline Kr4nKz1n - 09/01/2007 15:49
Avatar van Kr4nKz1n Onbekend Sowieso moet je even controleren of de gebruiker al in de tabel user_online staat.

Ik zelf heb een veld genaamd timelastaction, hierop selecteer ik.
Offline Sc0tTy - 09/01/2007 15:51
Avatar van Sc0tTy PHP interesse mjah kdoe liever dit , scheelt weer een query en wanneer ik ga tellen doe ik een GROUP BY op de user id ( met een JOIN )
Offline Kr4nKz1n - 09/01/2007 15:54
Avatar van Kr4nKz1n Onbekend Ja maar nu krijg je een waslijst met tig dezelfde gebruikers.
Telkens als ik refresh komt er een nieuwe regel bij.
Offline Sc0tTy - 09/01/2007 15:58
Avatar van Sc0tTy PHP interesse dat klopt maar dit word na 5 minuten toch verwijderd
Offline Kr4nKz1n - 09/01/2007 15:59
Avatar van Kr4nKz1n Onbekend In die 5 minuten sta ik samen met 20 andere mensen al wel 5*60*20 x in je lijst.

Leuk als je bezoekers dit weten.
Offline Sc0tTy - 09/01/2007 16:05
Avatar van Sc0tTy PHP interesse mjah dat is waar ik heb nu dit :
  1. function update_online() {
  2.  
  3. // Gebruikers ID
  4. $user_id = check_status( 'check' , 'id' );
  5. if ( !$user_id ) {
  6. $user_id = 0;
  7. }
  8.  
  9. // Kijken of gebruiker al is ingelogd zo ja updaten anders invoegen
  10. $query = mysql_secure_query( "SELECT id FROM user_online WHERE user_id = ?" , $user_id );
  11. if ( mysql_num_rows( $query ) ) {
  12. mysql_secure_query( "UPDATE user_online SET date = ? WHERE id = ?" , nl_time() , mysql_result( $query , 0 , 0 ) );
  13. } else {
  14. mysql_secure_query( "INSERT INTO user_online ( user_id , date ) VALUES ( ? , ? )" , check_status( 'check' , 'id' ) , nl_time() );
  15. }
  16.  
  17. // Tijd min 5 minuten
  18. $time = nl_time() - 300;
  19.  
  20. // Mensen die al minder dan 5
  21. mysql_secure_query( "DELETE FROM user_online WHERE date < ?" , $time );
  22. }
Offline Kr4nKz1n - 09/01/2007 17:27
Avatar van Kr4nKz1n Onbekend Zou je de volgende x <? vooraan je coding willen zetten?

Maar dit ziet er veel beter uit.

Moet je nog wat weten?
Offline Method - 10/01/2007 16:56
Avatar van Method Nieuw lid Hi Sc0tTy,

Ik zocht juist zo'n script wat jij aan het maken bent. Maar ik vraag me af hoe jij nu alle users die online echo't.

Thx
Offline ikkedikke - 10/01/2007 17:34 (laatste wijziging 10/01/2007 17:35)
Avatar van ikkedikke PHP expert maak liever gewoon een kolom bij je gebruikerstabel met de laatste actie.
en dan alle gebruikers eruit halen die de laatste actie binnen de laatste 5 minuten hadden.
Is maar 2 queries. die die je nu hebt 4
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.204s