PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Drei Fragen zu Logdateien mit PHP


WerWennNichtIch
25.11.2002, 21:53:29
Hallo!

ich habe eine einfache Logdatei mit PHP geschrieben, die mir anzeigt welche IP meine Seite besucht hat.

Der Code:



<?

$jetztip=getenv("REMOTE_ADDR");

touch("ip.txt");
$neuer_inhalt=$jetztip;
$schreibip=fopen("ip.txt","w");
fwrite($schreibip, $neuer_inhalt);
fclose($schreibip);

?>



Dies führt bei mehrmaligem ausführen zu folgender Ausgabe in der Datei ip.txt:



127.0.0.1127.0.0.1127.0.0.1127.0.0.1127.0.0.1127.0.0.1127.0.0.1127.0.0 .1127.0.0.1127.0.0.1127.0.0.1127.0.0.1127.0.0.1127.0.0.1
usw.


Die Probleme:

1. Wie bekomme ich es hin, dass jede ip Adresse in eine eigene Zeile geschrieben wird, also:



127.0.0.1
127.0.0.1
127.0.0.1
usw.




2. Wie versehe ich die einzelenen IP Adressen mit einem timestamp der angibt wann sie in die Datei ip.txt geschrieben worden sind?

3. Wie erreiche ich es, dass der Inhalt der Datei ip.txt gelöscht wird und der Protokollierungsprozess von Neuem anfängt wenn die Datei eine bestimmte Größe erreicht hat?

Herzliche Dank für Eure Mühe!

Gruß,

WerWennNichtIch

Dago
26.11.2002, 00:17:05
zu 1:
Häng' einfach ein ."n" an $neuer_inhalt an.

zu 2:
Setz' ein time().' '. vor $neuer_inhalt.

zu 3:
Wenn du die Datei wirklich mit dem Parameter "w" öffnest, dann wird sie bei jedem Aufruf automatisch geleert... Verwende stattdessen besser "a".

Kurz zusammengefasst:


<?php

if (@filesize('ip.txt') > 102400)
$file_handle = fopen('ip.txt','w');
else
$file_handle = fopen('ip.txt','a');

flock($file_handle,2); //Nicht unbedingt notwendig (http://de.php.net/flock)

fwrite($file_handle,time().' '.$_SERVER['REMOTE_ADDR']."n");

flock($file_handle,3); //Nicht unbedingt notwendig (http://de.php.net/flock)
fclose($file_handle);

?>


- Die Datei wird geleert, wenn sie 100 KB (102400 Byte) überschreitet.
- Vor jede IP wird ein Timestamp aus allen Sekunden seit dem 1.1.70 gesetzt. (http://de.php.net/date)