PC Freak
Erfahrenes Mitglied
Hallo,
hab mir anhand von Code Schnipseln eine IP Sperre gebastelt. Leider funktioniert diese nicht richtig. Eine IP soll 14400 Sek gesperrt sein, allerdings tut sie dies nicht. Sie bleibt einige Aufrufe gesperrt, dann wieder einmal nicht und dann wieder einige Aufrufe ...
Der Code:
hab nicht viel Ahnung von PHP
hab mir anhand von Code Schnipseln eine IP Sperre gebastelt. Leider funktioniert diese nicht richtig. Eine IP soll 14400 Sek gesperrt sein, allerdings tut sie dies nicht. Sie bleibt einige Aufrufe gesperrt, dann wieder einmal nicht und dann wieder einige Aufrufe ...
Der Code:
PHP:
<?php
$zugriff = 'Zugriff';
?>
<?php
// Speicherung der Daten in einer Datei
function schreiben($datei,$mode){
$fp = @fopen($datei,$mode);
flock($fp,2);
fwrite($fp,$_SERVER["REMOTE_ADDR"]."|".time()."\n");
flock($fp,3);
fclose($fp);
}
function ip_sperre() {
// Einstellungen
$reloadlogdatei = "reload.txt";
$anzahleintraege = 1000000000000000000000000000000000000000000000000000000000000000000000;
$zeitlimit = 14400; // in Sekunden
// Prüft, ob Datei existiert => ansonsten Erstellen
if(!file_exists($reloadlogdatei)) {
$datei = fopen($reloadlogdatei,"w+");
fclose($datei);
}
$fp = file($reloadlogdatei);
$size = sizeof($fp);
// Beschreibt die Datei, wenn Liste voll
if($size >= $anzahleintraege){
schreiben($reloadlogdatei,"w");
// Prüft, ob eine IP in der Liste steht
} else {
for ($i=0;$i<=$size;$i++) {
$zeile = explode("|",$fp[$i-1]);
// IP wird gefunden
if ($zeile[0] == $_SERVER["REMOTE_ADDR"] AND $zeile[1] > (time()-$zeitlimit)){
$ausgabe = true;
// IP wird nicht gefunden
} else {
$ausgabe = false;
}
}
// Protokolliert die IP-Adresse (schreibt)
schreiben($reloadlogdatei,"a+");
}
return $ausgabe;
}
// Hauptaufruf des Programms
if(ip_sperre()==false) echo "$zugriff";
else echo "kein zugriff";
?>
hab nicht viel Ahnung von PHP