Prüfen ob IP bereits in der Datei steht?

  • Hallo, wie kann ich prüfen ob z.B. eine Ip in einer Datei bereits steht? Habe schon etwas versucht was leider nicht viel gebracht hat :/
    Hier der Code :D

  • okay erst mal ob ich das richtig verstanden habe...

    du liest die ersten 512 bytes deiner ip.txt aus
    bei deinen Counter liest du die ersten 10 bytes (oder bis zum nächsten Zeilenumbruch oder bis zum ende).
    dann prüfst du ob deine ersten 512 bytes der ip.txt gleich der ip des nutzers sind was ja nie der fall ist^^

    $salam definierst du ohne es zu nutzen?
    dann schreibst du eine neue ip ein (aber nur wenn sie vorher schon drin war)??

    den Counter erhöhst du um eins und speicherst in?

    Einmal editiert, zuletzt von Roland (5. November 2012 um 17:26)

  • Ein effizienter Weg bei großen Dateien:

    PHP
    <?php
      $fh = fopen( $file );
      while( !feof( $fh ) ){
        $line = fgets( $fh, 4069 );
        if( preg_match( $pattern, $line ) ){
          // ip vorhanden
          break;
        }
      }
    ?>

    Jedoch ca. 3 mal so langsam wie folgende Technik:

    PHP
    <?php
      if( preg_grep( $pattern, file( $file ) );
    ?>

    Diese Methode braucht mehr Speicher da sie die gesamte Datei einliest.

    Einmal editiert, zuletzt von Basiii (6. November 2012 um 06:23)

  • also ich würde ja nicht erst die vielen befehle mit fopen undso machen, sondern einfach file_get_contents() und file_put_contents() nehmen

    Einmal editiert, zuletzt von ramon1611 (9. November 2012 um 09:15)

  • Damit überschreitest du bei größeren Dateien aber schnell den maximalen verwendbaren Speicher von PHP.

    Ein altes Zitat:

    "Das ist faul und zeugt von Unwissenheit!"

  • achso
    okay, wusste ich nicht

    warum faul?
    damit kann ich ganz einfach Speicherplatz sparen, da ich weniger Code schreibe
    also kann ich das ja bei kleinen Dateien verwenden

  • Speicherplatz sparen durch weniger Code ist in dem Fall wohl ein Witz (10 Zeilen gegen 1 Zeile) .. Ein möglichst kleiner Code ist zwar nicht verkehrt, jedoch sollte es in erster Linie darum gehen möglichst dynamisch zu bleiben.

    Hier geht es offenbar um einen Besucherzähler, da sollte die Datei im Normalfall recht klein bleiben, jedoch kann der Benutzer beeinflussen was in diese Datei eingetragen wird. Im Klartext: Gib jemanden der weiß was er tut eine Stunde Zeit und er hat die Datei so sehr zugemüllt das die Seite abstürzt wenn wir file_get_contents nutzen, da der zugewiesene Speicher überschritten wird.

    Außerdem ist es ungünstig neue Einträge über file_put_contents zu tätigen, da dies wieder enorm viel Speicher benötigt (im Gegensatz zu z.B. fwrite, was nur den neuen Inhalt hinzufügt statt die ganze Datei zu kopieren).

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!