Hallo!
Ich bin zur Zeit am Bauen eines Besucherzählers für eine Webseite. Dieser soll mit einer IP-Sperre funktionieren.
Bei einem Zugriff auf die Seite werden Zeit+IP-Adresse des Besuchers in die Datei "ip_new.txt" und der Zähler wird in die Datei "counter.txt" eingetragen. Nach dem Ablauf des zeitlichen Limits für die IP-Sperre wird der jeweilige Besucher wieder als neuer Besucher gezählt.
Nun habe ich folgenden Script zusammengebastelt:
<?php
$ipdatei = "ip_new.txt";
$zaehlerdatei = "counter.txt";
$zeitlimit = 10;
$ipliste = file($ipdatei);
foreach($ipliste as $zeile){
$trennung = explode("|", $zeile);
}
if((time()>($trennung[0]+$zeitlimit))&&(trim($trennung[1]."\n")==($_SERVER['REMOTE_ADDR']))){
$FilePointerIP = fopen($ipdatei, "a+");
fwrite($FilePointerIP, time()."|".$_SERVER['REMOTE_ADDR']."\n");
fclose($FilePointerIP);
$datei= fopen("counter.txt", "r+");
$dateigroesse=filesize("counter.txt");
$counter=fread($datei, $dateigroesse);
fclose($datei);
$counter++;
echo"Sie sind der ".$counter.". Besucher auf der Seite. ";
$datei=fopen($zaehlerdatei,"w");
$output=fwrite($datei, $counter);
fclose($datei);
echo "Schön dass Sie wieder da sind!";
}
elseif((time()<($trennung[0]+$zeitlimit))&&(trim($trennung[1]."\n")==($_SERVER['REMOTE_ADDR']))){
echo "Die Besucherzahl wird jetzt nicht erhöht, Sie waren schon heute da...";
}
else{
$FilePointerIP = fopen($ipdatei, "a+");
fwrite($FilePointerIP, time()."|".$_SERVER['REMOTE_ADDR']."\n");
fclose($FilePointerIP);
echo"Hallo! Sie sind das 1.Mal hier, nicht wahr?";
$datei= fopen($zaehlerdatei, "r+");
$dateigroesse=filesize($zaehlerdatei);
$counter=fread($datei, $dateigroesse);
fclose($datei);
$counter++;
echo"Sie sind der ".$counter.". Besucher auf der Seite. ";
$datei=fopen($zaehlerdatei,"w");
$output=fwrite($datei, $counter);
fclose($datei);
}
?>
- Es wird immer auf den letzten Eintrag in der IP-Datei zugegriffen, die ganze Liste wird nicht durchgesucht. Wie ändere ich mein Script, damit es funktioniert?
- Außerdem wäre es schön, wenn die Einträge in dieser IP-Datei auch aktualisiert werden könnten (also keine Einträge mit gleicher IP und ungleicher Zeit). Wie geht das?
- Wie mache ich eine "Auffrischung" der IP-Datei, so dass zu einem bestimmten Zeitpunkt alle Einträge dieser Datei gelöscht werden?
Hoffentlich kann mir jemand von Euch helfen, ich komme einfach nicht mehr weiter :(
Schreibt bitte möglichst einfach, ich bin noch eine Anfängerin in PHP ;)
Vielen-vielen Dank im Voraus!!!
lg tash