Archiv verlassen und diese Seite im Standarddesign anzeigen : htmlspecialchars und doppelte Anführungszeichen
Es geht um ein Gästebuch.
Text wird nach der Eingabe über Formular direkt in die DB geschrieben.
Zum Anzeigen des Eintrages werden später dann die Funktionen htmlspecialchars und nl2br angewendet.
Möchte nun noch eine Vorschau für den Eintrag mit einbauen. Hier gibt es jedoch Probleme mit den doppelten Anführungszeichen.
Wie regelt man es, dass die Anführungszeichen in der Vorschau zu sehen sind, wenn ich dann aber zurück gehe um eventuell den Eintrag zu ändern wieder als doppelte Anführungszeichen zu sehen sind in der Textarea?
Text mit "Hallogalli" schreibst du wahrscheinlich mit addslashes() in die DB?
$comment=addslashes(trim($comment));
Beim Auslesen asu der DB arbeitest du evtl. auch mit stripslashes()
$comment=htmlentities(stripslashes($comment));
echo nl2br($comment);
Wo ist dein Problem?
Text schreibe ich direkt in die DB ohne addslashes, wie bereits erwähnt.
Funktioniert gut, nur mit der Vorschau habe ich Probleme.
Problem Nr. 1
In der Vorschau wird aus "test" "\test"\
Problem Nr. 2
Wenn ich dann in der Vorschau auf zurück gehe wird aus "\ \\ und alles weiter wird abgeschnitten.
Daher addslashes und stripslashes
Original geschrieben von Husti
Daher addslashes und stripslashes
Bingo ... dürfte eigentlich dein problem lösen.
Original geschrieben von blumi
Problem Nr. 1
In der Vorschau wird aus "test" "\test"\
Problem Nr. 2
Wenn ich dann in der Vorschau auf zurück gehe wird aus "\ \\ und alles weiter wird abgeschnitten.
magic_quotes_gpc, zum x-ten Mal ...
Alles klar,
das sind die Wörter die ich brauchte.
Schau mir alles an und teste dann mal fleißig.
Danke
"\test"\
Wohl eher \" ;) *klugscheiß*
Jedenfalls mal was allgemeines: Es hat sich als praktischer erwiesen, die Umlaute und Anführungszeichen etc. _vor_ dem Einfügen in die DB umzuwandeln, und bei der Ausgabe lediglich ein nl2br anzuwenden. Damit sparst du dir ne Menge Arbeit.
ghostgambler 21-06-2007, 11:37 Original geschrieben von ArSeN
Jedenfalls mal was allgemeines: Es hat sich als praktischer erwiesen, die Umlaute und Anführungszeichen etc. _vor_ dem Einfügen in die DB umzuwandeln, und bei der Ausgabe lediglich ein nl2br anzuwenden. Damit sparst du dir ne Menge Arbeit.
Entities gehören nicht in deine Datenbank. Nie niemals nie, sie haben da absolut nichts zu suchen.
Eine Datenbank ist ein abstraktes Speichermedium, welches von verschiedenen Applikationen genutzt werden können muss und nicht alle Applikationen brauchen die Daten mit HTML-Entities.
Temporäre Daten kann man mit Entities zwischenspeichern, aber niemals die originalen Daten!
ghostgambler hats erfasst.
Was ist wenn die Daten morgen in ner XML Schnittstellen auftauchen sollen? Oder Übermorgen als CSV-Export in ner Excel-Tabelle landen?
Btw, warum htmlentities? htmlspecialchars (http://de.php.net/htmlspecialchars) reicht vollkommen. Schaut mal nach "Charset" im Bezug auf die DB. Ich benutze schon seit Jahren kein $uuml; mehr - auch nicht in HTML.
Noch ein Tipp, mysql_real_escape_string() statt addslashes, sofern es sich um eine MySQL Datenbank handelt. Imo gibts aber für andere DB-Schnittstellen eine ähnliche Funktion.
PS: Man möge mich korrigieren, wenn ich hier falsch liege...
Original geschrieben von ArSeN
Es hat sich als praktischer erwiesen, die Umlaute und Anführungszeichen etc. _vor_ dem Einfügen in die DB umzuwandeln,
Bullshit.
und bei der Ausgabe lediglich ein nl2br anzuwenden.
Komisch, wieso das nicht auch gleich schon vorher?
ghostgambler 21-06-2007, 12:11 Original geschrieben von prego
PS: Man möge mich korrigieren, wenn ich hier falsch liege... Nö, alles richtig, wird nur nicht überall so praktiziert ... leider ... folgende Programmierer haben dann die Arsch-Karte, wenn es darum geht auf einem non-standard-System aufzubauen~
Jedenfalls mal was allgemeines: Es hat sich als praktischer erwiesen, die Umlaute und Anführungszeichen etc. _vor_ dem Einfügen in die DB umzuwandeln, und bei der Ausgabe lediglich ein nl2br anzuwenden. Damit sparst du dir ne Menge Arbeit.
Nachdem sich der Pulverqualm verzogen hat...
Mal abgesehen von allen non-standard-systems, XML-Schnittstellen, CSV-Export, Applikationen usw. würden aus einem Zeichen mal flugs 6 bzw. mehr werden.
|