[PHP] IP Sperre funktionier nicht richtig

PC Freak

Ensign
Registriert
Nov. 2003
Beiträge
233
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:

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
 
Habs mir grad mal kopiert, funzt doch Einwandfrei.

Allerdings wird die Datei sau groß da der für jeden Reload nen Eintrag macht, würde das bissel abwandeln ^^ oder mit ner SQL Datenbank regeln das ist imho einfacher.
 

Ähnliche Themen

M
Antworten
5
Aufrufe
1.525
Zurück
Oben