login  Naam:   Wachtwoord: 
Registreer je!
 Forum

bezoekers online (Opgelost)

Offline sir_green - 21/04/2007 18:44
Avatar van sir_greenPHP interesse Ik heb een script gemaakt dat de leden telt die online zijn, dit heb ik gedaan dmv MySQL, als je inlogd wordt je status omgezet naar online. Ik tel dan het aantal rijen waar online staat en voer dat uit als aantal leden online.

Maar met bezoekers werkt dat natuurlijk anders omdat ze niet inloggen en uitloggen.

Kan iemand mij het principe uitleggen van het tellen van bezoekers (die dus niet ingelogd zijn). Ik hoef geen heel script met allerlei ingewikkelde functies, maar alleen het idee hoe je zo iets maakt.

Alvast bedankt!

9 antwoorden

Gesponsorde links
Offline Stefan14 - 21/04/2007 18:56
Avatar van Stefan14 PHP gevorderde ik kan je zo al vertellen dat je voor je gewone leden al verkeerd bezig bent, want als ze niet uitloggen blijven ze online staan.

oftewel, je kunt beter met een extra veld werken waarin een tijd staat opgeslagen van de laatste klik, dus bij iedere klik moet die tijd geupdate worden.
En dan stel je een tijd in van bijv. 5 minuten, als ze dan 5 minuten niets gedaan hebben zijn ze weer offline.

voor de bezoekers moet je gewoon het ipadres opslaan in een aparte tabel samen met een tijd en dat opdezelfde manier bijhouden.
Offline sir_green - 21/04/2007 18:59
Avatar van sir_green PHP interesse Maar mijn probleem is juist, hoe sla ik gegevens van iemand op als hij niet inlogd.
Offline Ibrahim - 21/04/2007 19:01
Avatar van Ibrahim PHP expert via IP misschien ?
Offline sir_green - 21/04/2007 19:10
Avatar van sir_green PHP interesse @siliecom14

Zou je misschien iets gedetaileerder kunnen omschrijven wat je bedoeld?
Offline Godlord - 21/04/2007 19:21 (laatste wijziging 21/04/2007 19:26)
Avatar van Godlord PHP gevorderde Moet ik je mijn script geven zonder is bezoeker ingelogd of niet detectie gedeelte?
Offline Stefan14 - 21/04/2007 19:28
Avatar van Stefan14 PHP gevorderde @sir_green,

je maakt twee tabellen
users - voor je normale (ingelogde) users
bezoekes - voor niet ingelogde bezoekers (velden id, ip, tijd)

in de tabel bezoekers sla je het ip op van de bezoeker als deze nog niet voorkomt met de bijbehorende tijd.
Komt het ip wel voor, dan update het record met dat ip en zet je de tijd naar de huidige tijd.

als de bezoeker wel ingelogd is kun je gewoon via het userid bij het record van die user komen en daar de tijd updaten bij iedere klik.

het verdient overigens aanbeveling om als iemand ingelogd is ook tevens te controleren of zijn ip adres nog in de tabel bezoekers voorkomt zodat je die kunt verwijderen, anders wordt hij in de tabel users en bezoekers beide geteld. en komt hij dus dubbel voor wat het online beeld te positief maakt.
Offline Rens - 21/04/2007 19:29
Avatar van Rens Gouden medaille

Crew algemeen
Stefan14, zou je dan niet beter een extra veld 'ingelogd' erbij kunnen zetten?
Met 1 of 0 erin?
Offline Stefan14 - 21/04/2007 22:52 (laatste wijziging 21/04/2007 22:53)
Avatar van Stefan14 PHP gevorderde tja, dat zou inderdaad beter kunnen. sommige dingen zijn simpeler dan je denkt 

overigens moet je er dan weer wel voor zorgen dat dit veld bij een bepaalde tijd inactiviteit ook weer op uitgelogd gezet wordt, anders als ze de browser afsluiten blijft hij op ingelogd staan.
Offline ikkedikke - 22/04/2007 12:55
Avatar van ikkedikke PHP expert dit is niet erg practisch he.
Je kan denk ik beter een tabel maken met alle hits als volgt:
id int(6) UNSIGNED
tijd datetime
userid int(6) UNSIGNED
ip int(8)

dan voor iedere hit een record toevoegen. voor userid het userid nemen, voor een niet-ingelogde gebruiker 0 nemen.
voor mensen het vragen: er is een functie: ip2long en nog 1 long2ip

vervolgens neem je de volgende query:
  1. SELECT * FROM `hits`
  2. WHERE TIMESTAMPADD(MINUTE, 5, tijd) > NOW()
  3. DISTINCT BY ip
  4. ORDER BY (
  5. (SELECT `userlevel` FROM `gebruikers` WHERE `id`= `hits`.userid)
  6. OR 0
  7. )

Ik heb het niet getest maar het zou je een eind op weg kunnen helpen.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.228s