Sönke Tesch: Ungewöhnlicher Umbruch in <textarea> oder mail()

Beitrag lesen

in meinem textarea-Feld gibt es nach Übermittlung in PHP immer Probleme. Folgendes Feld:

<textarea cols = "40" rows = "10" name="inhalt">
<?php if (isset($inhalt)) echo stripslashes($inhalt); ?>
</textarea>

... macht nach der Übermittlung nach mehreren hundert Zeichen Zicken: Es steht ein Ausrufezeichen mittendrin, gefolgt von einem \r\n Umbruch. Dann wird das ganze per mail() an mich geschickt. Es kann auch sein, dass der Fehler dort auftritt.

Als erstes solltest Du versuchen, den Fehler genauer zu lokalisieren. Aus Deinen Ausführungen konnte ich jedenfalls nicht erkennen, ob das ominöse !\r\n schon in der <textarea> auftaucht (also im HTML-Quelltext) oder erst in der Mail.

In ersterem Fall wäre dann stripslashes() der Übeltäter (sofern der Inhalt von $inhalt korrekt ist, schon mit var_dump() geprüft?). Als Abhilfe würde ich Dir empfehlen, auf stripslashes() ganz zu verzichten und die IMHO nervtötende Einstellung magic_quotes_gpc auszuschalten (z.B. "php_flag magic_quotes_gpc off" in der obersten .htaccess).
Sollte es wirklich mal nötig werden, die Anführungszeichen zu maskieren (Übergabe an SQL-Datenbanken), kannst Du immernoch auf addslashes() oder mysql_escape_string() zurückgreifen. Daß man Benutzereingaben nicht einfach wieder ausgibt (wie Du es anscheinend machst), sondern durch htmlentities() schickt, sollte sich nebenbei bemerkt von alleine verstehen. Andernfalls wird Dir irgendwann irgendjemand irgendwo Deine Seiten zerlegen, in dem er in einem Deiner Formulare HTML-Code eingibt und somit Deine Seiten etwas "umbaut".

Falls $inhalt in der HTML-Seite noch in Ordnung ist und auch richtig auf der Zielseite des Formulars ankommt, kann es nur an mail() liegen - da müsste man sich dann wohl mal eingehender mit den Einstellungen des Systemmailers auseinandersetzen.

Gruß,
  soenk.e