*EDIT* IEK!! Kan iemand me vertellen hoe ik die code minder layout verneukend kan neerzetten? dit was niet mijn bedoeling!
Hey allemaal.
Ik ben vandaag eigenlijk uit ergernis een beetje gaan rommellen aan een export-scriptje dat de access.log van apache2 overzet in een table "access" in MySQL
ik ben nog niet zo erg lang bezig met php (lees: Ik rommel wat aan) en dus vroeg ik me af of jullie nog tips / hint hebben of een grote gevaarlijke leak in de code vinden.
En wieweet maak ik zelfs nog iemand blij die hier al een tijdje naar zoekt
mjah genoeg gelul.. de code:
Ik heb het getest op een win2003 server machine met daarop Apache 2.0.46 / PHP 4.3.2
Ik denk dat dit scriptje ook prima zal werken voor *nix servertjes met apache2 (kwestie van het pad naar de logfile veranderen in /var/blablabla-enzo)
Ik ben benieuwd maar jullie input..
ik ben btw geen coder/webdesigner ik doe dit gewoon puur als tijdsverdrijf in de laatste dagen van dit jaar
Hey allemaal.
Ik ben vandaag eigenlijk uit ergernis een beetje gaan rommellen aan een export-scriptje dat de access.log van apache2 overzet in een table "access" in MySQL
ik ben nog niet zo erg lang bezig met php (lees: Ik rommel wat aan) en dus vroeg ik me af of jullie nog tips / hint hebben of een grote gevaarlijke leak in de code vinden.
En wieweet maak ik zelfs nog iemand blij die hier al een tijdje naar zoekt
mjah genoeg gelul.. de code:
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
36
37
38
39
40
| <? // gebruik dit om de table aan te maken (in de database apache) ?> <!-- CREATE TABLE `access` ( `ID` int(11) NOT NULL default '0', `USER` varchar(32) NOT NULL default '', `IP` varchar(32) NOT NULL default '', `DATE` varchar(32) NOT NULL default '', `ACTION` varchar(32) NOT NULL default '', `URL` varchar(255) NOT NULL default '', `REFERER` varchar(255) NOT NULL default '', PRIMARY KEY (`ID`) ) TYPE=MyISAM COMMENT='apache access_log export'; --> <? mysql_connect('localhost','root','') or die('could not connect'); //verbinding maken met sql mysql_select_db('apache') or die('db bestaat niet?'); //selecteer dbase apache mysql_query("TRUNCTATE TABLE 'access'"); // Maak de table leeg om dubbelle entry's te voorkomen $logfile = file("c:\apache2\logs\access.log"); // open de logfile (pad dus aanpassen!) foreach ($logfile as $key => $value) { $thisrow = explode(" ", $value); $id = $key + 1; $ip = $thisrow[0]; $user = $thisrow[2]; $date = $thisrow[3]; $date = str_replace("[",'',$date); // haalt een loze [ uit de regel $action = $thisrow[5]; $action = str_replace('"','',$action); // haalt een loze " uit de regel $url = $thisrow[6]; $referer = $thisrow[10]; $referer = str_replace('"','',$referer); // verwijderd de " voor en na de regel $sql = "INSERT INTO access (ID, USER, IP, DATE, ACTION, URL, REFERER) VALUES('$id','$user','$ip','$date','$action','$url','$referer')"; mysql_query($sql); } echo ("<H1>Logfile succesfully exported to MySQL!</H1><BR><B>WARNING!</B> This script empty's the table before it adds the logs!"); mysql_close (); ?> |
Ik heb het getest op een win2003 server machine met daarop Apache 2.0.46 / PHP 4.3.2
Ik denk dat dit scriptje ook prima zal werken voor *nix servertjes met apache2 (kwestie van het pad naar de logfile veranderen in /var/blablabla-enzo)
Ik ben benieuwd maar jullie input..
ik ben btw geen coder/webdesigner ik doe dit gewoon puur als tijdsverdrijf in de laatste dagen van dit jaar
[ Voor 13% gewijzigd door Verwijderd op 29-12-2003 18:02 ]