Statistik  Mitglieder gesamt: 68136  Mitglieder online: 1  Gäste online: 1 mehr...
Anzeige
| Thread: Trotz "htmlentities()" BB-Codes umwandeln?
 21.04.2008 20:30 Uhr
|
|
|
|
|
Hallo
Ich habe die Suche benutzt bin aber nicht auf das gewünschte Ergebnis gekommen ... leider.
So hatte ich es vor, den BB-Code umzuwandeln ... PHP:1
2
3
4
5
| <?php
$guestbook_text = str_replace('\"','"',$guestbook_array["guestbook_text"]);
$guestbook_text = str_replace("\'","'",$guestbook_text);
$guestbook_text = str_replace(":-)","<img src=\"./images/smilies/lol.gif\" border=\"0\" />",$guestbook_text);
?> |
Und die Variable "guestbook_text" will ich folgender Maßen ausgeben. Aber durch "htmlentities()" wird der Befehl "<img src=\"./images/smilies/lol.gif\" border=\"0\" />" als Text dargestellt und es erscheint nicht das Bild.
Aber ich will auch nicht, dass man einfach in den Gästebuchtext "<table>" oder soetwas hineinbaut und somit meine Website verunstaltet (das ist sie schon genug  )
Hat jemand eine Idee? Wäre nett, wenn es an meinem Beispiel veranschaulicht werden könnte, ohne einen total neuen Code zu posten (es sei denn, er ist wirklich viel besser - aber diese Schreibweise gefällt mir einfach ...)
Gruß
|
|
 21.04.2008 20:39 Uhr
|
|
|
|
|
Moin,
dann schick den den Text doch erst durch htmlentites(), dann sind die eingaben des Benutzer escapt und danach kümmerst du dich um die BB-Codes.
Kurz, die Reihenfolge der Bearbeitung einfach umdrehen
Gruß Dragonl
//EDIT:
Wie wird denn der Text gespeichert ? Etwa mit direkt so wie der Benutzer ihn eingegeben hat ?
Würdest du ihn nämlich "mit" htmlentitiles() in z.B. die Datenbank speichern, muss diese Funktion nicht mehr bei jedem anzeigen ausgeführt werden !?
 1 mal bearbeitet
|
|
 21.04.2008 20:43 Uhr
|
|
|
|
|
*drop* ...
Danke dir ... Aber wirklich verstehen, wieso es mit dieser Reihenfolge geht, tu ich nicht ...
Wahrscheinlich bin ich auch deswegen nicht auf diese Idee gekommen.
Gruß
//EDIT
Ok - ich probiere es mal aus, ob es mit htmlentites() in die Datenbank eintragen geht.
//EDIT-2
Wenn ich es mit htmlentities() in die Datenbank schreibe, un dann auf meiner Website den Eintrag editieren will, bekomme ich folgenden (störenden) Text zu Gesicht)
Zitat von Gästebucheintrag: <a href=\"http://www.google.de/\" title=\"Google\">Google</a>
 2 mal bearbeitet
|
|
 21.04.2008 20:51 Uhr
|
|
|
|
|
so zum gedankengang:
- es wird etwas eingegeben und in die daten bank eingegeben (davor natürlich escaped)
- beim auslesen wird zunächt htmlentities verwendet => dadurch werden alle html-zeichen konvertiert, so dass sie einfach als text dargestellt werden => es kann also über html kein schadcode mehr eingefügt werden
- jetzt werden formatierungen gemacht, wie z.B. BB-Codes, diese sind nämlich auch nach htmlentities noch enthalten, können also noch umgewandelt werden.
wenn man den am Anfang eingegebenen Text jetzt nocheinmal bearbeiten will, dann hat man immer noch den gleichen Text zur Verfügung, wie man ihn auch eingegeben hat und nicht nur noch die bereits mit htmlentities "verschandelte" variante, deswegen das htmlentities auch erst bei der ausgabe und nicht schon beim eintragen!
man könnte sich ja einfach eine funktion für die textausgabe schreiben: PHP:1
2
3
4
5
6
7
8
9
10
| <?php
function text_output($string) {
$string = htmlentities($string);
$string = str_replace("\'","'",$string);
$string = str_replace(":-)","<img src=\"./images/smilies/lol.gif\" border=\"0\" />",$string);
}
echo text_output($guestbook_array["guestbook_text"]);
?> |
 1 mal bearbeitet
|
|
 21.04.2008 21:11 Uhr
|
|
|
|
|
Bei mir liest er nur den letzten Datenbankeintrag aus, wenn ich folgenden Code benutze: PHP:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| <?php
while ($guestbook_array = mysql_fetch_array($guestbook_select_string_query)) {
function guestbook_text_output($guestbook_text) {
$guestbook_text = str_replace('\"','"',nl2br(htmlentities($guestbook_text)));
$guestbook_text = str_replace("\'","'",$guestbook_text);
$guestbook_text = str_replace(":angry:","<img src=\"./images/smilies/angry.gif\" border=\"0\" />",$guestbook_text);
$guestbook_text = str_replace(":biggrin:","<img src=\"./images/smilies/biggrin.gif\" border=\"0\" />",$guestbook_text);
$guestbook_text = str_replace(":confused:","<img src=\"./images/smilies/confused.gif\" border=\"0\" />",$guestbook_text);
$guestbook_text = str_replace(":cool:","<img src=\"./images/smilies/cool.gif\" border=\"0\" />",$guestbook_text);
$guestbook_text = str_replace(":cry:","<img src=\"./images/smilies/cry.gif\" border=\"0\" />",$guestbook_text);
$guestbook_text = str_replace(":evil:","<img src=\"./images/smilies/evil.gif\" border=\"0\" />",$guestbook_text);
$guestbook_text = str_replace(":frown:","<img src=\"./images/smilies/frown.gif\" border=\"0\" />",$guestbook_text);
$guestbook_text = str_replace(":hearts:","<img src=\"./images/smilies/hearts.gif\" border=\"0\" />",$guestbook_text);
$guestbook_text = str_replace(":lol:","<img src=\"./images/smilies/lol.gif\" border=\"0\" />",$guestbook_text);
$guestbook_text = str_replace(":rolleyes:","<img src=\"./images/smilies/rolleyes.gif\" border=\"0\" />",$guestbook_text);
$guestbook_text = str_replace(":smilie:","<img src=\"./images/smilies/smilie.gif\" border=\"0\" />",$guestbook_text);
$guestbook_text = str_replace(":surprised:","<img src=\"./images/smilies/surprised.gif\" border=\"0\" />",$guestbook_text);
$guestbook_text = str_replace(":tongue:","<img src=\"./images/smilies/tongue.gif\" border=\"0\" />",$guestbook_text);
$guestbook_text = str_replace(":wink:","<img src=\"./images/smilies/wink.gif\" border=\"0\" />",$guestbook_text);
}
?>
<?php echo guestbook_text_output($guestbook_array["guestbook_text"]); ?> |
Und damit keiner auf die Idee kommt, ich hätte die Bilder von cybton geklaut => es ist nur das "::" übernommen ... und falls es Probleme damit gäbe kann ich das ruhig ändern ...
 1 mal bearbeitet
|
|
 21.04.2008 21:56 Uhr
|
|
|
|
|
PHP:1
2
3
4
5
6
7
8
9
10
|
while ($guestbook_array = mysql_fetch_array($guestbook_select_string_query))
{
$text.=deinfunction($guestbook_array["guestbook_text"]);
[ [...] //beachte den "."vor dem "="
[...]
[...]
} |
 1 mal bearbeitet wentz: 21.04.2008, 21:56 Uhr
|
|
 21.04.2008 22:02 Uhr
|
|
|
|
|
Jetzt ist wieder in neues Problem aufgetreten ... wenn ich das htmlentities() auf folgende Art und Weise benutze, werden \" nicht mit " und \' nicht mit ' ersetzt ... PHP:1
2
3
4
5
6
| <?php
$guestbook_text = str_replace('\"','"',htmlentities($guestbook_array["guestbook_text"]));
$guestbook_text = str_replace("\'","'",$guestbook_text);
$guestbook_text = str_replace(":-)","<img src=\"./images/smilies/lol.gif\" border=\"0\" />",$guestbook_text);
echo nl2br($guestbook_text);
?> |
Aber wenn ich es auf folgende Art und Weise schreibe: PHP:1
2
3
4
5
6
| <?php
$guestbook_text = str_replace('\"','"',$guestbook_array["guestbook_text"]);
$guestbook_text = str_replace("\'","'",$guestbook_text);
$guestbook_text = str_replace(":-)","<img src=\"./images/smilies/lol.gif\" border=\"0\" />",$guestbook_text);
echo nl2br(htmlentities($guestbook_text));
?> |
Jetzt kann ich zwar BB-Code in HTML-Code umwandeln aber, wie gesagt, werden diese Zeichen nicht ersetzt.
Gruß
//EDIT
Oder auch nicht Oo Jetzt funktioniert keine der Schreibweisen mehr
 1 mal bearbeitet
|
|
|