[PHP-MYSQL] Load verschil

Pagina: 1
Acties:

Onderwerpen


Verwijderd

Topicstarter
hoi
ik bouw een website, mbhv php en mysql. Ik maak gebruik van een menu-structuur, om te bepalen welke pagina er te zien is. Nu wil ik statistieken bijhouden: ik wil weten welke pagina welk aantal keren bezocht is (ik kan detecteren welke pagina er momenteel zichtbaar is), en wie ze bezocht (land van herkomst zou zeer fijn zijn)

ik denk aan 2 methodes:
methode 1: ik maak een tekstbestandje aan, met allemaal tellers in (voor elke pagina 1 teller) Telkens als ik van pagina wissel, open ik dat tekstbestandje, zoek op op hoeveel de teler staat voor die bepaalde pagina, verhoog met 1, en sluit weer. PROBLEEM: hoe achterhaal ik het land van herkomst, en meer nog, hoe krijg ik dat overzichtelijk in een tekstybestandje...?

methode 2: ik maak een db (mysql): ik maak voor elke pagina een tabel. aan de hand van de selectie van pagina, bepaal ik welke tabel ik gebruik. Ik achterhaal het land (hoe???) en ik voeg dat als nieuwe entry in de tabel in (mss zelfs nog het ip erbij, of andere nuttige info, dat is uit te bereiden zoals ik wil :))

nu mijn vraag;
welke methode is de beste? aan de hand van volgende kriteria;
- belasting van de server (welke methode belast de server het minste, en is het verschil groot?)
- makkelijke uitlezing en verwerking van de gegevens achteraf (daarvoor lijkt methode 2 me aangewezen)
- waar merkt de bezoeker het minste van? (in snelheid van de site bedoel ik dan)

BIJKOMENDE VRAAG: hoe achterhaal ik in vredesnaam het land vanwaar de pagina bezocht wordt?? :)

thxiezzz

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Databases zijn voor de opslag van data. Waarom zou je lastig dingen op gaan slaan op het filesystem, en daar nog eigen functies voor moeten schrijven om de data op te halen ook? Ik zou dus sowieso voor methode 2 gaan.

Het land van herkomst bepalen kan niet zomaar, maar je kan wel kijken naar HTTP_ACCEPT_LANGUAGE, een servervar die aangeeft in welke taal je browser graag een webpagina ziet. Op die manier weet je niet het land van herkomst, maar wel de taal die gesproken wordt.
- belasting van de server (welke methode belast de server het minste, en is het verschil groot?)
De tweede belast de server het minste, en het zal denk ik een factor 10 schelen ofzo.
- makkelijke uitlezing en verwerking van de gegevens achteraf (daarvoor lijkt methode 2 me aangewezen)
Je zegt het zelf al. :)
- waar merkt de bezoeker het minste van? (in snelheid van de site bedoel ik dan)
Van beide methodes zou een bezoeker niet veel moeten merken. Als je methode 1 goed zou implementeren is het nog steeds in minder dan een tiende van een seconde klaar. Maar waarom zou je als het makkelijker kan? :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 01:32

alienfruit

the alien you never expected

Kun je niks met van die programma's die de log files van Apache analyseren? Scheelt veel cpu load ;)

Verwijderd

Topicstarter
allenfruit: tis niet mijn server, ik huur 'n domein...
ik kan enkel aan mijn accountje aan, en dat is het, dus vrees dat dat geen optie is...
methode 2 dan maar...
maar als ik weet in welke taal de browser graag iets ziet, ben ik niet veel vooruit...
doelpubliek is een groot deel van azië (ivm specifieke gevechtssport waar de site over gaat) en daar hebben ze negelse browsers neem ik aan... dus niet echt een indicatie van waar de request komt...

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op 16 september 2004 @ 02:43:
allenfruit: tis niet mijn server, ik huur 'n domein...
ik kan enkel aan mijn accountje aan, en dat is het, dus vrees dat dat geen optie is...
methode 2 dan maar...
Om te beginnen is het huren van een domein niet hetzelfde als het huren van een server, maar ik zal er maar vanuit gaan dat je een server + domein hebt geregeld bij je hoster. Over het algemeen kun je meestal wel toegang krijgen tot de logfiles die bij je host aangemaakt worden. Ik zou je host eens mailen als ik jou was. :)
Verwijderd schreef op 16 september 2004 @ 02:43:
maar als ik weet in welke taal de browser graag iets ziet, ben ik niet veel vooruit...
doelpubliek is een groot deel van azië (ivm specifieke gevechtssport waar de site over gaat) en daar hebben ze negelse browsers neem ik aan... dus niet echt een indicatie van waar de request komt...
Ook in Azië zijn legio verschillende talen, maar ik geef toe dat de taal van de browser niet echt handig is. (Wordt een Engelstalige browser nou door een Engelsman of een Amerikaan gebruikt?) Ik heb ooit wel eens een site gezien met een groot aantal IP ranges, en aan welke landen deze toe zijn gewezen. Ik weet zo even niet meer hoe die site heette, of waar die te vinden is, maar er loopt hier vast wel iemand rond die het weet. In ieder geval zou je met die database op basis van de positie van een IP binnen een range moeten kunnen bepalen uit welk land de gebruiker komt.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Kijk hier voor een databaseje waar je welk land kan vinden.
Onderaan de pagina staat een link naar de gratis versie.

Btw het lijkt me nogal onnodig om de server extra te belasten met het opslaan van deze gegevens in de database.
Elke redelijke host bied de logbestanden gewoon aan, als je die hebt dan kan je gewoon eventjes awstats gebruiken om de gegevens te analyseren.

Blog [Stackoverflow] [LinkedIn]


  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Waar je ook eens naar kan gaan kijken is : http://www.hostip.info/ deze kan bij mij zelfs de plaats terugvinden waar ik inzit. Ook al zit mijn provider ergens anders.

  • Obliterator
  • Registratie: November 2000
  • Laatst online: 19-09 14:48
Met een reverse DNS lookup zou je iets kunnen achterhalen, maar dat lukt waarschijnlijk maar voor een klein deel van de bezoekers.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ik ben dus voor oplossing 2 gegaan :)
ik heb iets in elkaar geknutseld dat mij verteld hoe vaak welke pagina op een bepaalde dag opgevraagd is.
maar nu heb ik daar nog een probleempje mee...

ik zou graag ook weten hoeveel UNIEKE bezoekers er zijn.
nu kan ik een teller verhogen telkens als mijn homepagina geopend wordt, maar dan heb ik niet de bezoekers geteld die rechstreeks naar een pagina komen (via link op andere site)
iemand een suggestie?

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op 17 september 2004 @ 03:18:
ik ben dus voor oplossing 2 gegaan :)
ik heb iets in elkaar geknutseld dat mij verteld hoe vaak welke pagina op een bepaalde dag opgevraagd is.
maar nu heb ik daar nog een probleempje mee...

ik zou graag ook weten hoeveel UNIEKE bezoekers er zijn.
nu kan ik een teller verhogen telkens als mijn homepagina geopend wordt, maar dan heb ik niet de bezoekers geteld die rechstreeks naar een pagina komen (via link op andere site)
iemand een suggestie?
Simpelweg een tabel in je database maken met daarin velden voor de datum en een IP-adres. Dan één PHP file maken die checkt of het IP van de bezoeker voor die dag al in de database staat. Zo nee, toevoegen, zo ja, niets doen. Dan include je die ene PHP file in alle andere PHP files, et violà, je tellertje werkt. Om te kijken hoeveel mensen er geweest zijn hoef je alleen maar een COUNT op te vragen met SQL en een juiste WHERE clause. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • flashin
  • Registratie: Augustus 2002
  • Laatst online: 17-12-2023
Wolfboy schreef op 16 september 2004 @ 03:27:Btw het lijkt me nogal onnodig om de server extra te belasten met het opslaan van deze gegevens in de database.
Elke redelijke host bied de logbestanden gewoon aan, als je die hebt dan kan je gewoon eventjes awstats gebruiken om de gegevens te analyseren.
Zijn er ook loganalyzers die geschreven zijn in PHP ipv CGI? Sourceforge al afgezocht, niets gevonden helaas :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Simpelweg een tabel in je database maken met daarin velden voor de datum en een IP-adres. Dan één PHP file maken die checkt of het IP van de bezoeker voor die dag al in de database staat. Zo nee, toevoegen, zo ja, niets doen. Dan include je die ene PHP file in alle andere PHP files, et violà, je tellertje werkt. Om te kijken hoeveel mensen er geweest zijn hoef je alleen maar een COUNT op te vragen met SQL en een juiste WHERE clause.
mja, op zich geen slecht idee, maar...
ik ga rond de 1000 bezoekers per dag zitten op topdagen (en dat is niet overschat, dat is het aantal bezoekers op de oude site, waar ik de vervanging voor maak). Dat wil dus zeggen: 1000 entry's in m'n tabel, elke dag. Dan heb ik een mooie verzameling ip's, maar wat heb ik daaraan?
ik tel ze enkel, waarom moet ik de ip's bijhouden (om te vergelijken, natuurlijk, maar toch...)

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op 17 september 2004 @ 16:58:
mja, op zich geen slecht idee, maar...
ik ga rond de 1000 bezoekers per dag zitten op topdagen (en dat is niet overschat, dat is het aantal bezoekers op de oude site, waar ik de vervanging voor maak). Dat wil dus zeggen: 1000 entry's in m'n tabel, elke dag. Dan heb ik een mooie verzameling ip's, maar wat heb ik daaraan?
ik tel ze enkel, waarom moet ik de ip's bijhouden (om te vergelijken, natuurlijk, maar toch...)
Als je de IP's niet bijhoudt, dan kun je niet kijken of diegene al eerder op je site is geweest die dag. Aan het eind van de dag of week of maand zou je ervoor kunnen kiezen alle bezoekers van die periode uit de tabel te gooien en alleen nog cijfers opslaan in een bestand of een andere tabel. Ik zou persoonlijk elke maand een leuke statistiek-pagina maken.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Thijsmans
  • Registratie: Juli 2001
  • Laatst online: 14:46

Thijsmans

⭐⭐⭐⭐⭐ (5/5)

Uit welk land komt je bezoeker?
Dit kun je achterhalen dmv de hostmask:

PHP:
1
2
$hostmask = gethostbyaddr( $_SERVER['REMOTE_ADDR'] );
$tld = substr($hostmask, strrpos($hostmask, '.') );


Als het goed is (niet getest ;) ) houd je hieruit de TLD van de bezoeker over (bijv. 'nl'). Er staan her en der wel php-arrays op het net met de tld en het bijbehorende land. Het simpelst is het om voor elke TLD een bestand te maken (bijv. 'nl.txt'), en hier elke keer de data van uit te lezen, op te tellen en op te slaan.

Hoe houd je bij wie uniek is?
Als je geen database wilt gebruiken, wat je hierboven zegt, kun je met cookies werken. Alleen als er geen cookie is, open je de bestanden voor verwerking.

Wat denkt Prammie hiervan?
Hiervoor bestaan prachtige tooltjes als de Webalizer. Tevens denk ik dat het verschil tussen platte tekst-files en MySQL echt niet zo groot is.
De tweede belast de server het minste, en het zal denk ik een factor 10 schelen ofzo.
Oh NMe84, denk je dat 'ofzo'? * Thijsmans denkt dat het geen drol uitmaakt, gezien MySQL ook een platte tekstfile is, maar dan met indexes 8)7
Het enige voordeel is idd dat er een scala aan functies al kant en klaar bestaat.

* Thijsmans loves MySQL, maar je moet het niet voor alles gaan gebruiken 'omdat je denkt dat het een factor 10 ofzo scheelt' 8)7

Privacy-adepten vinden op AVGtekst.nl de Nederlandse AVG-tekst voorzien van uitspraken en besluiten.


  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

flashin schreef op 17 september 2004 @ 14:46:
[...]
Zijn er ook loganalyzers die geschreven zijn in PHP ipv CGI? Sourceforge al afgezocht, niets gevonden helaas :)
Ik zou eigenlijk geen goede weten, helaas.

Blog [Stackoverflow] [LinkedIn]


Verwijderd

NMe84 schreef op 17 september 2004 @ 14:10:
[...]

Simpelweg een tabel in je database maken met daarin velden voor de datum en een IP-adres. Dan één PHP file maken die checkt of het IP van de bezoeker voor die dag al in de database staat. Zo nee, toevoegen, zo ja, niets doen. Dan include je die ene PHP file in alle andere PHP files, et violà, je tellertje werkt. Om te kijken hoeveel mensen er geweest zijn hoef je alleen maar een COUNT op te vragen met SQL en een juiste WHERE clause. :P
Een andere methode is het aanbrengen van een unieke index op de combinatie van velden die je uniek veronderstelt voor "1 gebruiker". Met INSERT IGNORE blijf je alle gegevens bijschrijven, de check op uniekheid is gedelegeerd aan MySQL.

Wat anders: als je nieuw bent met databases, is het handig je te verdiepen in de database-ideologie. Database servers kunnen dingen erg goed zelf als de database op een bepaalde manier is ontworpen. Een boek over Entity Relationship Analysis (ERA) helpt, alleen heb ik zo 1 2 3 niet een aanrader bij de hand. Maar ook "gewone" OOP helpt al een hoop.

  • ReZ1987
  • Registratie: September 2003
  • Nu online
flashin schreef op 17 september 2004 @ 14:46:
[...]
Zijn er ook loganalyzers die geschreven zijn in PHP ipv CGI? Sourceforge al afgezocht, niets gevonden helaas :)
Misschien heb je iets aan The Webalizer? :)

Death Knight Zaebor(80), Warlock Thortur (80) en Druid Galithor (80). Retired.


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Prammenhanger schreef op 17 september 2004 @ 18:45:
Oh NMe84, denk je dat 'ofzo'? * NMe denkt dat het geen drol uitmaakt, gezien MySQL ook een platte tekstfile is, maar dan met indexes 8)7
Het enige voordeel is idd dat er een scala aan functies al kant en klaar bestaat.

* NMe loves MySQL, maar je moet het niet voor alles gaan gebruiken 'omdat je denkt dat het een factor 10 ofzo scheelt' 8)7
Dan mag je mij eens vertellen wat sneller is: zelf een file op het filesystem openen, de juiste data opzoeken en uitlezen, en vervolgens de file sluiten, of dat je een mooie geïndexeerde tabel in SQL uitleest, met predefined, precompiled functies. Lijkt me toch dat de laatste manier van uitlezen sneller gaat. En zo niet, dan kun je net zo goed alles in files gaan stoppen! 8)7 [/sarcastisch]
Data hoort in een database, maakt ook veel makkelijker statistiek-pagina's.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • flashin
  • Registratie: Augustus 2002
  • Laatst online: 17-12-2023
oh lol bedankt, niet echt aan gedacht, stupid.. ;)

Volgens mij maakt het in het begin met weinig records natuurlijk niet zoveel uit, dit loopt vanzelf wel op en dan wil je wel een database ervoor gebruiken

  • Thijsmans
  • Registratie: Juli 2001
  • Laatst online: 14:46

Thijsmans

⭐⭐⭐⭐⭐ (5/5)

NMe84 schreef op 18 september 2004 @ 13:13:
[...]

Dan mag je mij eens vertellen wat sneller is: zelf een file op het filesystem openen, de juiste data opzoeken en uitlezen, en vervolgens de file sluiten, of dat je een mooie geïndexeerde tabel in SQL uitleest, met predefined, precompiled functies. Lijkt me toch dat de laatste manier van uitlezen sneller gaat. En zo niet, dan kun je net zo goed alles in files gaan stoppen! 8)7 [/sarcastisch]
Data hoort in een database, maakt ook veel makkelijker statistiek-pagina's.
Oh, en MySQL slaat het op in lucht ofzo? Ik dacht het wel duidelijk was, maar blijkbaar niet. Ik betwijfel jouw bewering 'dat het denk ik zo'n factor 10 scheelt'. Het zal zeer waarschijnlijk wat schelen, omdat -zoals ik al zei, en wat jij later ook zei alsof het jouw uitspraak was 8)7 - mysql met geindexeerde bestanden werkt, maar een factor 10 is, zeker bij programmeren/scripten zéér veel.
Data hoort in een database
Niet elke data :) Als je alleen een tellertje bijhoudt met de inhoud '34', is het wat overkill om daat een tabel voor te maken, denk je niet? 8)7

Overigens ben ik wel met je eens dat het vele malen makkelijker werkt, zeker bij de wat uitgebreidere tellertjes dan bovenstaand voorbeeld ;)

Privacy-adepten vinden op AVGtekst.nl de Nederlandse AVG-tekst voorzien van uitspraken en besluiten.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
weer wat anders :)

ik heb nu alles wat ik nodig heb: het land (thx to Prammenhanger)
het IP (thx to myself, want was een beetje zoekwerk)
nu wil ik:
in mijn tabel :
controlleer of IP aanwezig is in tabel
indien ja: verhoog teller aantal paginas voor dat ip
indien nee: maak entry bij in tabel, en zet teller op 1

hoe duw ik dat in een query? Kan dat wel in 1 query? (ken nog niet zo veel van sql)
heb gelezen over subquery's, maar dat lost mijn probleem niet op denk ik,. Ik geraak er in alle geval niet uit.

wie verzint mij de juiste query? :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ik sta al weer wat verder...
alleen het probleem is nu: hoe kan ik checken of een bepaald ip al in men tabel voorkomt?
ik zoek dus een query die mij aangeeft of een bepaald ip in men tabel voorkomt of niet.
kan dat wel ik sql?
of moet ik dat in php zelf nakijken (dus eerst hele tabel ophalen (toch de relevante velden) en dan kijken of ergens in de opgehaalde array het ip gevonden wordt, en aan de hand daarvan iets doen... maar het lijkt me zo omslachtig... kan sql niet ZELF op een waarde checken, en aangeven of ze al dan niet aanwezig is?
mijn dank is groot...

Acties:
  • 0 Henk 'm!

  • blizt
  • Registratie: Januari 2003
  • Laatst online: 11-12-2024

blizt

Wannabe-geek

Je zou natuurlijk de manual van mysql kunnen lezen?
Dan vind je zoiets:
code:
1
SELECT velden FROM table  WHERE ipadres='$ipadres'


edit:

Vergeten URL na de = te zetten :P

[ Voor 28% gewijzigd door blizt op 19-09-2004 18:18 ]

United we stand, and divided we fall


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Prammenhanger schreef op 18 september 2004 @ 14:09:
Oh, en MySQL slaat het op in lucht ofzo? Ik dacht het wel duidelijk was, maar blijkbaar niet. Ik betwijfel jouw bewering 'dat het denk ik zo'n factor 10 scheelt'. Het zal zeer waarschijnlijk wat schelen, omdat -zoals ik al zei, en wat jij later ook zei alsof het jouw uitspraak was 8)7 - mysql met geindexeerde bestanden werkt, maar een factor 10 is, zeker bij programmeren/scripten zéér veel.
Over die factor 10 heb je gelijk, dat heb ik achteraf gezien overschat. Maar daar ging het dan eigenlijk ook niet om, het ging erom wat sneller en efficiënter werkte. ;) En verder herhaalde ik je uitspraak om aan te geven dat je zelf al zegt dat het sneller is om met een database te werken, terwijl je eerder zei (and I quote): * NMe denkt dat het geen drol uitmaakt.
Prammenhanger schreef op 18 september 2004 @ 14:09:
Niet elke data :) Als je alleen een tellertje bijhoudt met de inhoud '34', is het wat overkill om daat een tabel voor te maken, denk je niet? 8)7
Ik denk niet dat veel mensen die geïnteresseerd zijn in statistieken alleen het getal willen opslaan. De meesten zullen toch een wat uitgebreider systeem willen maken en ook opslaan waar op de site mensen geweest zijn, via welke site ze er gekomen zijn, hoeveel ze gedownload hebben, enz. En dan volstaat een tellertje in een file niet meer, zoals je zelf gelukkig ook al zegt. :)
Verwijderd schreef op 19 september 2004 @ 17:43:
ik sta al weer wat verder...
alleen het probleem is nu: hoe kan ik checken of een bepaald ip al in men tabel voorkomt?
ik zoek dus een query die mij aangeeft of een bepaald ip in men tabel voorkomt of niet.
kan dat wel ik sql?
of moet ik dat in php zelf nakijken (dus eerst hele tabel ophalen (toch de relevante velden) en dan kijken of ergens in de opgehaalde array het ip gevonden wordt, en aan de hand daarvan iets doen... maar het lijkt me zo omslachtig... kan sql niet ZELF op een waarde checken, en aangeven of ze al dan niet aanwezig is?
mijn dank is groot...
SQL:
1
SELECT COUNT(*) FROM tabel WHERE ip = 'hetipadresdatjezoekt'

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
code:
1
SELECT velden FROM table  WHERE ipadres='$ipadres'
was ook mijn eerste idee... maar dat werk alleen als het ip bestaat, maar wat als het ip niet voorkomt in de tabel...?

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op 19 september 2004 @ 18:33:
[...]

was ook mijn eerste idee... maar dat werk alleen als het ip bestaat, maar wat als het ip niet voorkomt in de tabel...?
Dan krijg je 0 records terug. Kun je controleren met mysql_num_rows(). Maar met mijn query krijg je meteen een aantal terug, dat werkt misschien wat makkelijker.

[ Voor 12% gewijzigd door NMe op 19-09-2004 18:36 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • niwreG
  • Registratie: Augustus 2003
  • Laatst online: 17-10-2024

niwreG

^heeft dat geschreven->

vanmiddag nog geschreven:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?php
$ip = $_SERVER['REMOTE_ADDR']; // krijg het ip 
$query= mysql_query("SELECT COUNT(*) FROM bezoekers WHERE ip = '$ip'"); // kijk of het ip in de database zit
$bezoeker = mysql_fetch_array( $query ); //Fix een array

if ($bezoeker['0'] == 0) { //ip komt niet voor
    mysql_query("INSERT INTO `bezoekers`(`ip`, `bezoeken`) VALUES('" . $ip . "', '1')"); // voeg ip toe
    print 'Dit was je 1ste bezoek aan de site'; //print dat het het eerste bezoek was
    echo "<br />\n"; // nieuw regeltje
    print 'totaal aantal unieke bezoekers: '. mysql_num_rows(mysql_query("SELECT * FROM bezoekers")); // print het aantal unieke bezoekers
    $i = 0; // zet teller op 0
    $sql="SELECT * FROM bezoekers"; // selecteer alles
    $res=mysql_query($sql);//query de sql command
    while ($lees = mysql_fetch_object ($res)) {//while loopje
        $i = $lees->bezoeken + $i; // tel het totaal aantal bezoeken van iedereen (dus alle ip's)
    }
}

elseif($bezoeker['0'] == 1) { // user komt voor
     $bezoeken = mysql_fetch_object( mysql_query("SELECT * FROM bezoekers WHERE ip = '$ip'") ); // krijg het aantal bezoeken
     $bezoekenr = $bezoeken->bezoeken  + 1; // verhoog het bezoek met 1
     mysql_query("UPDATE `bezoekers` SET bezoeken='" . $bezoekenr . "' WHERE ip='" . $ip ."'"); // en schrijf het maar weg
     print 'Dit was je ' . $bezoekenr . 'de bezoek aan de site'; // print het aantal bezoeken
     echo "<br />\n";// nieuw regeltje
     print 'totaal aantal unieke bezoekers: '. mysql_num_rows(mysql_query("SELECT * FROM bezoekers")); // print alle unieke bezoeken
    $i = 0; // zet teller op 0
    $sql="SELECT * FROM bezoekers"; // selecteer alles
    $res=mysql_query($sql);//query de sql command
    while ($lees = mysql_fetch_object ($res)) {//while loopje
        $i = $lees->bezoeken + $i; // tel het totaal aantal bezoeken van iedereen (dus alle ip's)
    }
}
echo "<br />\n";   // nieuw lijntje    
print 'Totaal aantal bezoekers:' . $i; // en print het totaal aantal bezoekers
?> 


Het is mischien een beetje crappy code :P
maar hij laat totaal aantal bezoekers, unieke bezoekers en totaal aantal bezoeken van een ip zien.

[ Voor 64% gewijzigd door niwreG op 19-09-2004 18:57 . Reden: Ff commentaar toegevoegd ]

^^eventueele typfouten zijn als vermaak bedoeld


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
mooi!
hier haal ik uit wat ik aan't zoeken was!
thx...
werkt nu perfect...
even een randvraag:
ik weet nu
- Hoeveel UNIEKE bezoekers er per dag op de site geweest zijn
- Hoeveel bezoekers er in totaal op de site geweest zijn
- Hoe vaak elke afzonderlijke pagina bekeken is
- Hoeveel pagina's een bezoeker bekeek (om het gemiddelde aantal bekeken pagina's/bezoeker te bepalen)
- Datum waarop een bezoeker de site bezocht
- Land van herkomst van de bezoeker
- ip-adres van de bezoeker (handig voor eventueel later spammers te bannen)

zijn er nog gegevens die ik wil verzamelen voor bepaalde doeleinden....? of mss latere doeleinden, die ik beter meteen implementeer? wat wil een doorsnee webmaster zoals weten over zijn bezoekers...? :)

Acties:
  • 0 Henk 'm!

  • blizt
  • Registratie: Januari 2003
  • Laatst online: 11-12-2024

blizt

Wannabe-geek

Daarom kijk je hoeveel rijen je terugkrijgt?
Hintje: count/mysql_num_rows ....... (mysql-functie/php-functie - hf ;))

edit:

Oh, er was ook nog 'n pagina 2 :D

[ Voor 19% gewijzigd door blizt op 19-09-2004 19:21 ]

United we stand, and divided we fall


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op 19 september 2004 @ 19:08:
zijn er nog gegevens die ik wil verzamelen voor bepaalde doeleinden....? of mss latere doeleinden, die ik beter meteen implementeer? wat wil een doorsnee webmaster zoals weten over zijn bezoekers...? :)
Geïnstalleerde plugins, browser, OS, resolutie, enz... Kijk maar eens wat Nedstat bijvoorbeeld zoal opslaat. Zelf volsta ik met deze statistieken voor mijn site.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

De vraag was een php based script, en voor zover ik weet is dat script CGI ;)

Blog [Stackoverflow] [LinkedIn]


Acties:
  • 0 Henk 'm!

  • ReZ1987
  • Registratie: September 2003
  • Nu online
Wolfboy schreef op 19 september 2004 @ 19:36:
[...]
De vraag was een php based script, en voor zover ik weet is dat script CGI ;)
Uhmz, ik gebruik dat programma al tijden, en voor zover ik weet was dat juist geschreven OMDAT de meeste andere loganalysers in CGI/andere moeilijke programmeertaal geschreven zijn.
Is written in C to be extremely fast and highly portable.
Hmz, het is dan geschreven in C, maar de bestanden die hij produceert zijn PHP/HTML ;)
Ook als je het programma wilt laten analyseren, moet je webalizer/webalizer.php starten :P

[ Voor 8% gewijzigd door ReZ1987 op 31-07-2006 19:30 ]

Death Knight Zaebor(80), Warlock Thortur (80) en Druid Galithor (80). Retired.


Acties:
  • 0 Henk 'm!

  • ixi
  • Registratie: December 2001
  • Laatst online: 27-08 23:59

ixi

niwreG schreef op 19 september 2004 @ 18:48:
PHP:
1
2
3
4
5
6
7
8
    // ...
    $sql="SELECT * FROM bezoekers"; // selecteer alles
    $res=mysql_query($sql);//query de sql command
    while ($lees = mysql_fetch_object ($res)) {//while loopje
        $i = $lees->bezoeken + $i; // tel het totaal aantal
                       // bezoeken van iedereen (dus alle ip's)
    }
    // ...
"SELECT SUM(bezoeken) FROM bezoekers" lijkt me handiger.

[ Voor 7% gewijzigd door ixi op 20-09-2004 10:50 ]

Pagina: 1