Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
htmlspecialchars und doppelte Anführungszeichen [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
brauche Webseite ideal für Vereine und Firmen
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
htmlspecialchars und doppelte Anführungszeichen


 
blumi
21-06-2007, 08:16 
 
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?

 
Husti
21-06-2007, 09:07 
 
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?

 
blumi
21-06-2007, 09:19 
 
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.

 
Husti
21-06-2007, 09:23 
 
Daher addslashes und stripslashes

 
Wyveres
21-06-2007, 09:25 
 
Original geschrieben von Husti
Daher addslashes und stripslashes

Bingo ... dürfte eigentlich dein problem lösen.

 
wahsaga
21-06-2007, 09:28 
 
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 ...

 
blumi
21-06-2007, 09:45 
 
Alles klar,
das sind die Wörter die ich brauchte.

Schau mir alles an und teste dann mal fleißig.

Danke

 
ArSeN
21-06-2007, 11:20 
 
"\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!

 
prego
21-06-2007, 11:54 
 
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...

 
wahsaga
21-06-2007, 11:55 
 
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~

 
Husti
21-06-2007, 13:03 
 
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.


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:44 Uhr.