Guten Mittag.
Ich habe in PHP einen Besucherzähler geschreiben, und wenn eine IP in den letzten 30 Minuten schon da war, wird eine Zahl angehoben, das ganze jedoch nicht als neuer Besuch gewertet.
Nun gibt es aber ein Problem: vor dem neuen Eintrag wird immer ein Zeilenumbruch eingefügt. Ich habe stundenlang über dem Code gebrütet und die Stelle nicht gefunden.
Könnt ihr mir helfen?
Code
<?
// datum, zeit und ip herausfinden
$IP = $_SERVER['REMOTE_ADDR'];
$datei = file("pfad");
$timestamp = time();
$d2 = $datei[2]; // hier steht, wie viele Einträge da sind
$min = (date("H",$timestamp) * 60 + (date("i",$timestamp)));
$day = date("Y",$timestamp);
$datum = date("Y.m.d",$timestamp);
$i = $d2 + 3; // hinterste Zeile
$b = 0; //speichert, ob die IP gefunden wurde
$zwischen = array();
do
{
$i--;
$zwischen = explode("|",$datei[$i]);
if(!($i > 0 && $zwischen[0] == $datum && $min - $zwischen[1] <= 30 )) {break;} //Abbruch wenn Eintrag von Gestern oder mehr als 30minuten her
if($zwischen[2] == $IP)
{
$b = 1;
}
}
while($b == 0); //wird versucht ip übereinstimmung zu finden
if($b == 1) //bei IP-Übereinstimmung
{
$zeile = $zwischen[0] . "|" . $min . "|" . $zwischen[2] . "|" . ($zwischen[3] + 1) . "|" . $zwischen[4];
//neue Uhrzeit wird eingefügt sowie der Zähler um eins erhöht
$datei[$i] = $zeile;
$datei[$d2 + 3] = "*/";
$datei[$d2 + 4] = "?>";
$datei[2] = $d2;
$datei[0] = "<?";
$datei[1] = "/*";
}
else //ohne Übereinstimmung
{
// neuer Eintrag wird generiert
$zwischen = array($datum,$min,$IP,1);
$zeile = $datum . "|" . $min . "|" . $IP . "|" . 1 . "|" . $min;
$datei[$d2 + 3] = $zeile;
$datei[$d2 + 4] = "*/";
$datei[$d2 + 5] = "?>";
$datei[2] = $d2 + 1;
$datei[0] = "<?";
$datei[1] = "/*";
}
$datei3 = "";
//Array wird übernommen
for($i = 0; $i < $d2+6; $i++)
{
$datei3 .= $datei[$i]."\n";
}
// Eintragung in die Datei
$datei2 = fopen("pfad","w");
fwrite($datei2,$datei3);
fclose($datei2);
?>
Alles anzeigen
Ich finde die Stelle einfach nicht, wo der zusätzliche Umbruch eingeschleust wird.
Findet jemand den Fehler?
Ich würde mich sehr über Hilfe freuen, da blickt man ja nicht sofort durch.
Danke im Voraus
The User