azok: "\n" wird ignoriert???

hi!

Ich habe ja ein Weblogsystem ("PLog") geschrieben. So, kurz vor dem Release taucht auf einmal ein Fehler auf, auf den ich keine Antwort weiß. Das komische Dabei ist, dass auf meiner Testumgebung (XAMPP) alles  fehlerfrei funktioniert. Am Server hat das Script jedoch ein Problem:

Sobald eine Nachricht geschrieben wird, wird das "\n" der vorherigen anscheinend ignoriert und die Nachricht einfach angehängt wird, ohne in die nächste Zeile zu springen. Das hat natürlich zur Folge, dass die Einträge nicht mehr korrekt ausgelesen werden können. Ich Poste mal nun einfach den Code, der das in die Datei schreibt:

  
if(isset($_POST['submit']) && $_POST['submit'] == $submit_button_text)  
{  
  $id = "tp_";  
  $id .= count($file_main_array)+1; //um zu erreichen dass eintrag 1 nicht 0 ;-)  
  $entry = id.DELIMITER.$title.DELIMITER.$email.DELIMITER.$name.DELIMITER.$text.DELIMITER.$date.DELIMITER.$time.DELIMITER.$ip."\n";  
  $open_file = @fopen($file_main, 'a')  
    or die("$open_error");  
  echo "  
    <div id=\"plogmessage\"><p class=\"plogmsghead\">$successfully_saved_head</p>$successfully_saved_msg <br /><a href=\"$name_of_page\"  
    class=\"ploglink\">$to_main_page</a> | <a href=\"$name_of_page?admin=options\"  
    class=\"ploglink\">$options</a> | <a href=\"$name_of_page?admin=write\"  
    class=\"ploglink\">$write_new_message</a></div>  
  ";  
  flock($open_file, 2);  
  fwrite($open_file, $entry);  
  flock($open_file, 3);  
  fclose($open_file);  
}  

wobei $open_file = "items.dat"

Ich hoffe, irgendjemand kann mir da von euch weiterhelfen!

lg
azok

--
Murphys Law: "Alles Schöne im Leben ist entweder illegal, ungesetzlich oder es macht dick."
Mein Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:( n4:° ss:) de:> js:| ch:? sh:) mo:) zu:)
  1. hi,

    Sobald eine Nachricht geschrieben wird, wird das "\n" der vorherigen anscheinend ignoriert und die Nachricht einfach angehängt wird, ohne in die nächste Zeile zu springen. [...]
    Das komische Dabei ist, dass auf meiner Testumgebung (XAMPP) alles  fehlerfrei funktioniert

    hast du dabei berücksichtigt, dass windows- und linux-system unterscheidliche zeilenumbruchzeichen bzw. -sequenzen benutzen?

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. hi!

      hast du dabei berücksichtigt, dass windows- und linux-system unterscheidliche zeilenumbruchzeichen bzw. -sequenzen benutzen?

      Ööhh... nein. Was müsste ich daran ändern??

      lg
      azok

      --
      Murphys Law: "Alles Schöne im Leben ist entweder illegal, ungesetzlich oder es macht dick."
      Mein Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:( n4:° ss:) de:> js:| ch:? sh:) mo:) zu:)
      1. echo $begrüßung;

        hast du dabei berücksichtigt, dass windows- und linux-system unterscheidliche zeilenumbruchzeichen bzw. -sequenzen benutzen?

        Ööhh... nein. Was müsste ich daran ändern??

        Für Windoes \r\n eintragen oder du nimmst einen Editor zum Ansehen des Logfiles, der mit dem Unix-Zeilenende (\n) umgehen kann.

        echo "$verabschiedung $name";

        1. hi!

          [...] oder du nimmst einen Editor zum Ansehen des Logfiles, der mit dem Unix-Zeilenende (\n) umgehen kann.

          Das Ansehen macht keine Probleme. Es wird beim reinschreiben in das File das "\n" scheinbar "ignoriert"...

          lg
          azok

          --
          Murphys Law: "Alles Schöne im Leben ist entweder illegal, ungesetzlich oder es macht dick."
          Mein Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:( n4:° ss:) de:> js:| ch:? sh:) mo:) zu:)
          1. echo $begrüßung;

            [...] oder du nimmst einen Editor zum Ansehen des Logfiles, der mit dem Unix-Zeilenende (\n) umgehen kann.

            Das Ansehen macht keine Probleme. Es wird beim reinschreiben in das File das "\n" scheinbar "ignoriert"...

            Eben dieses "scheinbar" meine ich. Der Notepad zeigt die Zeilen ohne Umbruch an, wenn nur ein \n zur Trennng dazwischen ist. Der will unbedingt \r\n haben.

            echo "$verabschiedung $name";

            1. hi!

              Eben dieses "scheinbar" meine ich. Der Notepad zeigt die Zeilen ohne Umbruch an, wenn nur ein \n zur Trennng dazwischen ist. Der will unbedingt \r\n haben.

              öhh... auch hier muss ich dir wiedersprechen. 1. verwende ich zum ansehen nicht Notepad, sondern den Editor, der in LeechFTP integriert ist. Und zweitens wird das ganze dann so angezeigt:

              tp_1@uniqid|Titel|eMail|Name|Text|ip
              tp_2@uniqid|Titel|eMail|Name|Text|iptp_3@uniqid|Titel|eMail|Name|Text (etc.)

              wenn ich das jetzt nicht manuell in die nächste Zeile "schmeiß", dann wird mir auch die tp_3@... logischerweise nicht ausgegeben...

              lg
              azok

              --
              Murphys Law: "Alles Schöne im Leben ist entweder illegal, ungesetzlich oder es macht dick."
              Mein Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:( n4:° ss:) de:> js:| ch:? sh:) mo:) zu:)
              1. echo $begrüßung;

                Ich halte das "scheinbar" aufrecht, denn mein Versuch mit deinem Code eben zeigte, dass das \n nicht überschrieben wird.

                Eben dieses "scheinbar" meine ich. Der Notepad zeigt die Zeilen ohne Umbruch an, wenn nur ein \n zur Trennng dazwischen ist. Der will unbedingt \r\n haben.

                öhh... auch hier muss ich dir wiedersprechen. 1. verwende ich zum ansehen nicht Notepad, sondern den Editor, der in LeechFTP integriert ist.

                Dann ist der anscheinend auch nicht besser als der Notepad. Schreibe doch mal \r\n statt \n in deinen Quelltext und schau dann noch einmal. Oder schau dir die Datei mit einem Hex-fähigen Editor (beispielsweise UltraEdit) an.

                Und zweitens wird das ganze dann so angezeigt:

                tp_1@uniqid|Titel|eMail|Name|Text|ip
                tp_2@uniqid|Titel|eMail|Name|Text|iptp_3@uniqid|Titel|eMail|Name|Text (etc.)

                Mir scheint, dass dein Editor das \n zwar nicht anzeigt, aber als ein Zeichen wertet, an dem ein Umbruch stattfinden kann, wenn die Zeile sonst zu lang werden würde.

                echo "$verabschiedung $name";

    2. Hallo wahsaga,

      Sobald eine Nachricht geschrieben wird, wird das "\n" der vorherigen anscheinend ignoriert und die Nachricht einfach angehängt wird, ohne in die nächste Zeile zu springen. [...]
      Das komische Dabei ist, dass auf meiner Testumgebung (XAMPP) alles  fehlerfrei funktioniert

      hast du dabei berücksichtigt, dass windows- und linux-system unterscheidliche zeilenumbruchzeichen bzw. -sequenzen benutzen?

      Und Mac natürlich wieder andere - das sollte man ebenfalls nicht vergessen.

      Grüße

      Marc Reichelt || http://www.marcreichelt.de/

      --
      Linux is like a wigwam - no windows, no gates and an Apache inside!
      Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
      http://emmanuel.dammerer.at/selfcode.html