cybton.com
Über uns | Jobs | Werbung | Sitemap | AGB | Impressum | Hilfe ?
 Kostenlos anmelden)
Forum
Aktuellste Beiträge
Forenregeln

Community
BB-Codes
Tags
Chat
Suche (Web)
Wer ist online?
Top-User

Basar


Statistik
Mitglieder gesamt: 68136
Mitglieder online: 1
Gäste online: 1
mehr...

Anzeige
Forum » Forum: Website & Webprogrammierung » Thread: Trotz "htmlentities()" BB-Codes umwandeln?

Thread: Trotz "htmlentities()" BB-Codes umwandeln?


21.04.2008 20:30 Uhr

 

Status: offline
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.
PHP:
1
2
3
<?php
            echo nl2br(htmlentities($guestbook_text));
?>
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  :lol:  )
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ß
___________________________
Meine CyDOTs
21.04.2008 20:39 Uhr

 

Status: offline
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 :wink: 

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
___________________________
Gemeinde Jugend Vertretung Bremen
"Ich will das Rad kein zweites mal erfinden,
ich will nur verstehen wie es funktioniert !"
21.04.2008 20:43 Uhr

 

Status: offline
*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:
     &lt;a href=\&quot;http://www.google.de/\&quot; title=\&quot;Google\&quot;&gt;Google&lt;/a&gt;
2 mal bearbeitet
___________________________
Meine CyDOTs
21.04.2008 20:51 Uhr

 

Status: offline
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
___________________________
see you on
--> www.moskito-rv.de
--> www.sone-works.de
21.04.2008 21:11 Uhr

 

Status: offline
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
___________________________
Meine CyDOTs
21.04.2008 21:56 Uhr

 

Status: offline
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
21.04.2008 22:02 Uhr

 

Status: offline
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  :question:   :tear: 
1 mal bearbeitet
___________________________
Meine CyDOTs
Ähnliche Threads Forum Ähnlichkeitsgrad
 Welcher HTTP-Status bei zwischengeschalteten Captchas Website & Webprogrammierung 1
 Unbefugte Person per ??Medusa?? auf PHP-Dateien zugreifen? Website & Webprogrammierung 1
 Design für Joomla coden. -->15000 Cydots Website & Webprogrammierung 1
 BBCode per Klick in Textarea einfügen Website & Webprogrammierung 1
 [gelöst][Java] readUTF(String) in Integer umwandeln Softwareprogrammierung 1
 BBcodes aus Popup in ein Textfeld Website & Webprogrammierung 1
 UBB Frage Website & Webprogrammierung 1
nach obennach oben

Copyright © 2008 cybton-network

Google
Partner: #Musik - Dein Internetradio - nexem. - .wir machen news - Your-Book.net - Dein kostenloses Gästebuch
ANEXIA - PHP Entwicklung - Dockers - s.Oliver Schuhe - Think Schuhe - der eigene Weg - Dorfen - Paul Green Schuhe - Bequeme Geox - Web-Entwicklung