Datei schreiben und lesen

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

  • Datei schreiben und lesen

    Hallo
    Ich schreibe eine Datei mit:
    PHP-Code:
    $WWHCount++;
    $ip_datname="z:".$REMOTE_ADDR.".dat";
    $datei=fopen("$ip_datname","w");
    fputs ($datei,$Bes."\r\n");
    fputs ($datei,$WWHCount."\r\n");
    fputs ($datei,$WWhenH."\r\n");
    fputs ($datei,$d."\r\n");
    fclose($datei); 
    und später lesen mit:
    PHP-Code:
    <?
    print "Ihre IP :".$REMOTE_ADDR."<br>";
    $ip_datname="Z:\\".$REMOTE_ADDR.".dat";
    if (file_exists($ip_datname))
    {
    $datei=fopen("$ip_datname","r");
    $Bes=fgets ($datei,100);
    $WWHCount= fgets ($datei,100);
    $WWhenH= fgets ($datei,100);
    $d= fgets ($datei,100);
    fclose($datei);
    print "Hallo ".$Bes." ! <br>";
    print "zum ".$WWHCount.". mal hier<br>";
    print "der letzte Besuch war am :<br>";
    print $d;
    }
    ?>
    Ich dachte immer das beim Lesen mit fgets bis zum Zeilenumbruch gelesen wird...?
    Leider liest gleich der erste fgets Befehl die komplette Datei ein bzw.100
    Zeichen.Da die Längen aber uterschiedlich sind kann ich das so nicht gebrauchen.
    Was ist hier falsch oder gibt es einen Weg ??
    Könnte nach jedem Schreibbefehl ein Sonderzeichen schreiben und die beim Lesen wieder suchen...aber gehts nicht einfacher ????

    Bernd

    EDIT:
    php.tags by Abraxax
    Zuletzt geändert von Abraxax; 07.07.2003, 13:54.

  • #2
    Probier's mal mit dem 'file' Befehl...
    mens agitat molem

    Kommentar


    • #3
      PHP-Code:
      while ($zeile fgets ($datei,4000)) 
      so wird das ganze zeilenweise ausgelesen
      gruss
      peter
      Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
      Meine Seite

      Kommentar


      • #4
        Original geschrieben von Kropff
        PHP-Code:
        while ($zeile fgets ($datei,4000)) 
        so wird das ganze zeilenweise ausgelesen
        peter
        Hmm...

        Dumme Frage - watt is wenn eine Zeile 4005 bytes lang is?

        7-/anz

        Kommentar


        • #5
          rate mal! Wird die vielleicht nur bis zum 4000. Zeichen ausgelesen?

          Kommentar


          • #6
            Ebend.

            Unter *nix kann eine Zeile 1,2 kilometer lang sein, und u. U. immernoch kein Zeilenende in Sicht. Somit ist die Aussage, mit fgets($,4000) würde die Datei Zeilenweisen eingelesen, nicht richtig - hiermit werden nur Zeilen bis maximal 4000 bytes gelesen.

            BTW: Viele Grüße aus Gladbach an den Gladbacher

            7-/anz

            Kommentar


            • #7
              aber es ist ja nicht ausgeschlossen, dass du 5000 oder was weiß ich.

              ansonsten geht natürlich auf implode(file()) oder wie auch immer...

              Grüße zurück!

              Kommentar


              • #8
                toll

                Danke für die tollen Antworten.
                Aber so geht es eben nicht.....so mache ich es ja.....!!!!

                Bernd

                Kommentar


                • #9
                  ... also es klappt nicht?

                  Dumme Frage - Du hast Dir die Datei mal innem Editor angesehen, um sicherzustellen das auch 4 Zeilen geschrieben worden sind?

                  BTW:
                  Du hast im Script-Verzeichnis nicht zufällig so ne komische datei liegen die mit z: anfängt, z. B. so: z:ipadresse.dat ??
                  Du weisst, das auch windoof rechner nur menschen sind, und wenn z: ohne den backslash zum ziel einer verknüpfung führt, ist das höchstens ein bug, aber ganz bestimmt nicht die Regel! Also nimm bitte lieber "Z:\Dateiname" statt "z:dateiname".

                  Falls Du immer noch nich klar kommst müssema mal ans Eingemachte ...

                  7-/anz

                  Kommentar


                  • #10
                    oh je

                    danke für die Antwort....
                    sooo doof ist windows garnicht....die Datei liegt schon richtig im Drive Z:
                    Z: genügt windows.....
                    D:\ geht nicht weil php das nicht will,da muss es schon d:\\ heissen.
                    Das ist nicht das Problem....die 4 Zeilen sind auch drin....
                    nee das problem ist das die Datei gleich mit dem ersten fgets KOMPLETT
                    eingelesen wird.

                    Bernd

                    Kommentar


                    • #11
                      ich weissnet warum, aber ...
                      PHP-Code:
                      $fn "Z:\\\";
                      $fn .= $_SERVER['REMOTE_ADDR'];
                      $fn .= ".dat";

                      $fp = fopen($fn,"wb");
                      $fw = fwrite($fp,$var1.":".$var2.":".$var3.":".$var4."\r\n");
                      fclose(
                      $fp);

                      $fp = fopen($fn,"rb");
                      $fr = fread($fp,4096);
                      fclose(
                      $fp);

                      $vars = explode(":",$vars);
                      $var1 = $vars[0];
                      $var2 = $vars[1];
                      $var3 = $vars[2];
                      $var4 = $vars[3]
                      .. ungetestet, aber so _muss_ (müsste?) es klappen..

                      Noch 2 Tips:

                      1: fopen($fn,"wb"); bzw. fopen($fn,"rb") -> das b steht für binary safe (bei windows)!

                      2: fwrite($fp,$wasichschreibenwill,strlen($wasichschreibenwill));
                      -> es könnte sein, dass dir die magic_quotes_runtime in die quere kommen, und mittels der längenangabe wird die einstellung overridden.

                      guten8,

                      7-/anz

                      Kommentar


                      • #12
                        OffTopic:
                        @fiderallalla: Ich fahr jeden morgen bei dir vorbei!

                        Kommentar


                        • #13
                          OffTopic:

                          Neddu nu bistu aber komplett OT ;-)
                          Hmm .. such such .. aah - Venn
                          Machmal Kontakt pPM!

                          guten8, 7-/anz

                          Zuletzt geändert von ; 07.07.2003, 22:03.

                          Kommentar


                          • #14
                            OffTopic:
                            OffTopic:
                            PM geht nicht für normale User. Kannst mir aber ne Mail schicken.

                            Kommentar


                            • #15
                              jou

                              Danke TobiaZ für die Antwort.Ja so ähnlich habe ich es jetzt auch gemacht.
                              Einfach ein paar Trenner dazwischen und diese dann mit
                              $Bes=strtok($Bes,chr(166));
                              wieder gesucht.

                              Danke für die Mühe.

                              Bernd

                              Kommentar

                              Lädt...
                              X