[PHP&MySQL] Apache log uitlezen en IP bezoekers en links aan elkaar verbinden
Hoe wil ik dat gaan doen?
Wel ik maak een cronjob aan die een script uitvoert die de apache usage log nacheckt om 23:55, op foute links die bezocht zijn via die web-proxy. (Script moet IP aan de link koppelen dus)
De volgende dag als de 'foute' bezoeker weer de proxy wilt gebruiken, wordt hem verteld dat hij voor deze maand geband is omdat hij meer als 30 foute links bezocht heeft. (Tellertje in de database die de foute links opteld)
Na een maand gaat de stand weer naar 0 en mag hij het opnieuw proberen.
Alles draait dus om de apache logs, en vooral het IP van de bezoeker.
In mijn apache log kan ik dus zien welk IP welke link bezoek. Op deze manier:
[IP] - - [DATUM] "[BEZOCHTE LINK" [GETAL???]- "[NOGMAALS EEN BEZOCHTE LINK]" "[USERAGENT&INFO]"
Dus het bovenstaande geeft tweemaal een link, die je kunt verbinden aan het IP. Hieronder een voorbeeld van een gevulde Apache-log regel:
222.33.222.33 - - [05/Jun/2007:00:12:53 +0200] "GET /www.youtube.com/img/pic_upload_IETS.gif HTTP/1.1" 200 - "www.youtube.com/watch?v=IETS" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
Hier komen mijn vragen:
1) Hoe is de apache log uit te lezen? (laat maar, intussen al gevonden, word opgeslagen als DATUM.tar.gz in /logs.
2) Hoe een IP aan een LINK koppelen in de database (In MySQL database plaatsen en dergelijke zal wel lukken denk ik. Gaat om het verband brengen met elkaar.) Zou iemand me een voorbeeld kunnen geven, hoeft niet compleet, ik wil er van leren ;)
Het overige programmeer werk gaat wel lukken denk ik.
Alvast bedankt voor je reactie!
Maar goed stel dat dat kan, is het niet moeilijk te maken.
Tabelletje maken:
user_ips:
==========
id
ip
first_call_date
visits:
=======
id
adres
user_id
vervolgens kan je counten op de visits table hoe vaak iemand het al fout heeft gedaan.
en aan de hand van first_call_date ( dus de eerste foute url call ) zien hoe lang dat geleden is en of je die persoon dus moet blocken jah of de nee.