login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Wie online?

Offline sjony123 - 18/01/2007 17:54
Avatar van sjony123Nieuw lid Ik ben bezig met een script waarbij gebruikers moeten inloggen.
Maar ik zou graag willen als de gebruiker ingelogd is, dat ie dan kan zien wie er nog meer ingelogd zijn!
Ik maak gebruik van sessies!
Dus kan ik op een pagina zetten bij wie die sessies actief zijn ofzo?

19 antwoorden

Gesponsorde links
Offline Kr4nKz1n - 18/01/2007 17:55
Avatar van Kr4nKz1n Onbekend Je hebt neem ik aan een MySQL tabel voor de leden?
Maak een veld genaamd lastaction of iets dergelijks.
Update bij elke actie (op de config pagina dus) de lastaction met time().

Dan lees je uit wie er binnen de laatste 5 min. ofzo een actie hebben verricht. En die zijn "online".
Offline sjony123 - 18/01/2007 17:58
Avatar van sjony123 Nieuw lid Het probleem is dat nog niet lang geleden met php begonnen ben, en nog steeds zit te leren hoe alles moet   Dus ik zou niet weten hoe ik dat zou moeten doen  
Offline Xtent - 18/01/2007 17:58
Avatar van Xtent Onbekend Kr4nKz1n legt het net uit aan je.. Probeer het in ieder geval eerst....
Offline sjony123 - 18/01/2007 18:04
Avatar van sjony123 Nieuw lid Maar als ik niet weet hoe je bij elke actie de dingen in de database wijzig, hoe moet ik het dan proberen...
Offline Kr4nKz1n - 18/01/2007 18:06
Avatar van Kr4nKz1n Onbekend Je hebt toch een config?

Als je daarin controleert of iemand is ingelogd en dan gewoon een query met een update erin zet, is dit een wijziging die bij elke actie wordt uitgevoerd.
Offline TotempaaltJ - 18/01/2007 18:10
Avatar van TotempaaltJ PHP interesse Mijn broer heeft iets bedacht met sessieen MySQL :

Citaat:
== Recept: ==
+ Een MySQL Tabel
+ Een website/server
+ Een toetsenbord
+ Een Muis
+ En het belangrijkste: Een computer of een laptop!  

== Hoe te maken? ==
Men maken een nieuwe regel in de tabel aan, genaamd "online" of iets dergelijks, met een INT met de lengte 1! Men doen als in PHP 0 = FALSE en 1 = TRUE, men lezen in elke pagina zowel de MySQL tabel als de Sessie, als de regel "online" op 1 (TRUE) staat, mag hij de pagina bekijken, als het niet zo is, dan niet!
Zo kan je bijvoorbeeld ook de online leden laten zien:
SELECT * FROM leden WHERE online IS 1
Dat werkt wel, denk ik... Zoniet, vraag het nog even na (na het weekend ben ik verder gevorderd met MySQL)!


Oftewel: Hetzelfde als Kr4nKz1n zei!
Offline sjony123 - 18/01/2007 18:20
Avatar van sjony123 Nieuw lid Ik zal het straks of morgen proberen! 
Offline Kr4nKz1n - 18/01/2007 18:20 (laatste wijziging 18/01/2007 18:20)
Avatar van Kr4nKz1n Onbekend Helemaal geweldig!
gehe
Offline Gerard - 18/01/2007 18:26
Avatar van Gerard Ouwe rakker En hoe bepaal je dan dat een lid offline is gegaan? Je houdt namelijk nu nergens bij wanneer het lid voor het laatst online is geweest.
Offline sjony123 - 18/01/2007 18:46
Avatar van sjony123 Nieuw lid Zoals ik begrijp: als iemand inlogd moet in de database in de regel "online" (of andere naam) gewijzigd worden in een "1" en als je uitlogd in een "0"!
Offline Kr4nKz1n - 18/01/2007 18:47
Avatar van Kr4nKz1n Onbekend Nee.
Met time werken, zie mijn berichten.
Offline Gerard - 18/01/2007 18:51
Avatar van Gerard Ouwe rakker
Citaat:
Zoals ik begrijp: als iemand inlogd moet in de database in de regel "online" (of andere naam) gewijzigd worden in een "1" en als je uitlogd in een "0"!

Ik wil gelijk even opmerken dat Kr4nKz1n het goede antwoord heeft gegeven, maar wil toch verder hierop ingaan om jouw inzicht te zien hierop.

Hoe kun je controleren of iemand uitlogd? Wat nu als iemand gewoon de browser sluit... er wordt dan geen trigger verzonden en je kan dus niet zomaar even nog een script uitvoeren dat hem 'uitlogd'.
Offline sjony123 - 18/01/2007 18:53 (laatste wijziging 19/01/2007 16:38)
Avatar van sjony123 Nieuw lid Je moet het niet aan mij vragen, ik weet het zelf ook niet 

En wat is dat time? Dat weet ik nog niet wat dat is en wat ie doet !

Citaat:
Rens edit:
PHP.net: time


O, is dat time ervoor dat na zoveel tijd het "1"tje weer veranderd in een "0"letje?
Offline Kr4nKz1n - 19/01/2007 16:46
Avatar van Kr4nKz1n Onbekend Je moet niet met een 1 of 0 werken.

Moet ik het nog eens herhalen? Ook Proximus zegt het nog een keer.

Bij elke actie (al voorgedaan) update je de lastaction.
Deze lees je uit en controleer je even wie er binnen 5 min. een actie heeft verricht.
Bij het uitloggen kun je ervoor kiezen om die time iets terug in de tijd te zetten, zodat je niet meer online bent.

  1. <?
  2. //Modify last action
  3. mysql_query("UPDATE leden SET lastaction='".time()."' WHERE user=''".$_COOKIE['user']."'");
  4.  
  5. //Log out
  6. mysql_query("UPDATE leden SET lastaction='".time()-300."' WHERE user='".$_COOKIE['user']."'");
  7.  
  8. //List online users
  9. mysql_query("SELECT user FROM leden WHERE lastaction<'".time()-300."'");
Offline timo - 19/01/2007 16:56
Avatar van timo PHP ver gevorderde je kan ook om nog een gedeelte automatisch uit te loggen een onunload bij je body zetten die via ajax een pagina oproept die je uitlogd..
Offline sjony123 - 19/01/2007 19:11 (laatste wijziging 19/01/2007 19:13)
Avatar van sjony123 Nieuw lid
  1. mysql_query("SELECT user FROM leden WHERE lastaction<'".time()-300

Het klopt dan toch niet helemaal? Want als er een actie uitgevoerd wordt, wordt alleen time() gedaan en dus gaat er ook gewoon die tijd van time() in de database, en als hij de gebruikers moet selecteren, selecteerd ie de gebruikers waar de tijd van time() is EN 5 minuten ervan af! En omdat iedereen die een actie doet en daardoor de normale tijd krijgt, vind ie geen gebruikers...

Ik snap het zelf niet en wel en daardoor weet ik niet of dit een logisch bericht is!  

EDIT: Dus (ik weet zelf niet hoe): er moet iets op waardoor de gebruikers geselecteerd worden die tussen 5 minuten geleden en nu een actie gedaan hebben...
Offline sjony123 - 19/01/2007 19:30
Avatar van sjony123 Nieuw lid O ff weer over m'n laatste bericht: Ik weet het denk ik al! 

Er staat WHERE lastaction<'".time()-300."'
Ik had die '<' niet gezien 
Offline Kr4nKz1n - 19/01/2007 19:39
Avatar van Kr4nKz1n Onbekend Run dat script nou eerst even ok?
Let even op de operator (<).
Offline sjony123 - 19/01/2007 19:53 (laatste wijziging 19/01/2007 19:54)
Avatar van sjony123 Nieuw lid Hij doet het!   Bedankt allemaal!!!  
En die operator moet volgens mij (>) zijn, anders geeft ie alle gebruikers weer die niet ingelogd zijn
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.189s