"\n" wird ignoriert???
azok
- php
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
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
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
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";
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
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";
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
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";
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 funktionierthast 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/