" verhindern

Liebe Leute,
Jedes Mal wenn ich auf meinem Server via php ein E-Mail versende, werden alle Anführungszeichen " in & quot ; umgewandelt.
Wie verhindere ich das?
Liebe Grüsse,
Kalsan … mehr auf http://w-w-w.ms/a45933

Wie genau verschickst du denn die Email?
Eventuell hilft dir http://php.net/manual/de/function.html-entity-decode… weiter.

schreiben.php enthält ein Formular. Dieses wird per $_POST an senden.php weitergeleitet, das $_POST durch htmlspecialchars() jagt. senden.php bindet je nach Konfiguration email.php oder pn.php ein und ruft die Funktion email() oder pn() auf. Beide Funktionen nehmen den Text noch einmal durch die htmlspecialchars-Mangel. email.php ruft dann die Funktion mail(empfänger, betreff, text, absender \r\n X-Mailer:stuck_out_tongue:hp) auf. Falls pn.php stattdessen geladen wurde, so wird per $datenbank->prepare und ->execute via INSERT INTO in die Datenbank geschrieben.

htmlentities() wird zu keinem Zeitpunkt verwendet. Das Problem besteht auch wenn anstatt eines E-Mails in die Datenbank geschrieben wird.
htmlspecialchars() führt anderords auf der Seite nicht zu Problemen.

Was könnte der Auslöser sein?
lg
Kalsan

[…] das $_POST durch htmlspecialchars()
jagt.[…] Beide Funktionen nehmen den Text noch einmal durch die htmlspecialchars-Mangel.

Sprich du machst (laut deiner Beschreibung) ein doppeltest Encoding. Aus " wird somit nicht ", was bei der Anzeige ja kein Problem sein sollte, sondern ein ", welches dann wie von dir beschrieben angezeigt wird.

1 Like

Ahaa da liegt also der Wurm versteckt!
Würde also htmlspecialchars(html_entity_decode()) das Problem beheben?
lg
Kalsan

Allgemein wuerde ich Inhalte nur unbehandelt in die Datenbank stecken (also nur mit dem fuer das in die DB Einfuegen noetige Escaping) und erst bei der Anzeige des Textes ein Umwandeln des Textes vornehmen. Das hat u.a. den Vorteil das man somit spaeter einfacher auf evtl. auftretende Fehler reagieren kann oder auch andere Formate einfacher ausliefern kann.

2 Like