file Problem

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • file Problem

    Hi,

    wenn ich mit dem folgenden Script die Datei $ipdatei lade, gibt er mit bei count 1 aus, obwohl die Datei nicht existiert. Wieso ist das so?


    PHP-Code:
    @$ip_array file($ipdatei);
    echo 
    count($ip_array). "<br>"
    p-flash

  • #2
    print_r($ip_array); ?

    Kommentar


    • #3
      Ich benutze das in einer for-Schleife und deshaöb wird die schleife einmal durchlaufen obwohl die Datei leer ist. Er müsste doch bei count 0 ausgeben oder nicht?

      p-flash

      Kommentar


      • #4
        Original geschrieben von fox34
        print_r($ip_array); ?
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          ...wird die schleife einmal durchlaufen obwohl die Datei leer ist
          Ev ist die Datei eben nicht leer, sondern enthält ein Zeilenendzeichen. Und file() gibt die Zeilenendzeichen gemäss manual mit zurück.
          Probier mal folgendes:
          PHP-Code:
          echo nl2br($ip_array[0]); 
          Wenn im Quellcode jetzt ein <br /> steht, dann war die Datei eben doch nicht leer.
          Falls es dies nicht ist, dann mach mal ein var_dump($ip_array) oder ein print_r() wie von Abraxax gefordert.

          Gruss

          tobi
          Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

          [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
          Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

          Kommentar


          • #6
            Aber die Datei existiert gar nicht, deshalb dürfte das doch nicht sein oder?

            Wenn ich print_r benutze passiert nichts.



            Hier ist der komplette Abschnitt


            PHP-Code:
            $aktiv         1;
            $reload_iv     5// Reload interval
            $datei         "counter.txt";
            $ipdatei     "ips.txt";
            //$stellen = 5;

            function pruf_IP ($rem_addr)
            {
                global 
            $ipdatei$reload_iv;
                
            $gefunden 0;
                @
            $ip_array file($ipdatei);
                
            $reload_dat fopen($ipdatei"w");
                
            $cur_time time();
                for (
            $i 0$i count($ip_array); $i++)
                {
                    list(
            $ip_addr$time_stamp) = explode("|"$ip_array[$i]);
                    if( 
            $cur_time < ($time_stamp + (60 $reload_iv)) )
                    {
                        if(
            $ip_addr == $rem_addr)
                        {
                            
            $gefunden 1;
                        }
                        else
                        {
                            
            fwrite($reload_dat"$ip_addr|$time_stamp");
                        }
                    } 
            // if
                
            // for

                
            fwrite($reload_dat"$rem_addr|$cur_time\n");
                
            fclose($reload_dat);
                return 
            $gefunden;

            p-flash

            Kommentar


            • #7
              Entferne mal das @. Das unterdrückt eine allfällige Fehlermeldung.
              Wir nun ein Fehler geworfen ??

              Gruss

              tobi
              EDIT:

              Was ergibt ein var_dump($var) ???

              Zuletzt geändert von jahlives; 30.09.2005, 07:55.
              Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

              [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
              Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

              Kommentar


              • #8
                Ja, es kommt ein Fehler dass die Datei nicht existiert.

                p-flash

                Kommentar


                • #9
                  ich weiß das problem ist schon gelöst aber ich hab grad erst reingeschaut und will trotzdem was sagen.

                  laut manuall
                  im Fehlerfall gibt file() FALSE zurück.
                  also ist der wert von $ip_array=0. wenn du jetzt ein count drauf machst, dann steht in der variable was drin, und zwar genau ein wert (0). deswegen liefert dir count=1. probier es aus
                  PHP-Code:
                  $test=false;
                    echo 
                  count($test); 
                  ändere es auf
                  PHP-Code:
                  @$ip_array file($ipdatei);
                  if(!empty(
                  $ip_array)) echo count($ip_array). "<br>";
                  else echo 
                  "Datei existiert nicht"
                  dann sollte das ganze ohne probleme laufen.
                  ich geh zum lachen in den keller

                  Kommentar


                  • #10
                    file_exists() sollte immer dabei sein.

                    Kommentar

                    Lädt...
                    X