Umwandlungsproblem mit htmlspecialchars

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Umwandlungsproblem mit htmlspecialchars

    Ich habe folgendes Problem. Ich speichere einen Eintrag in der SQL Datenbank unter Verwendung von mysql_real_escape_string im Backend ab.

    Wenn ich diesen nun im Frontend mit html_special_chars wiedergebe, werden die HTML Zeichen nicht umgewandelt, bzw. nicht richtig angezeigt.

    Der verwendete PHP Code
    PHP-Code:
    <?php echo htmlspecialchars($row[beschreibung]); ?>
    Anzeige im Browser (p Tags werden nicht als Absatz behandelt, Umlaut wird nicht dargestellt)
    Code:
    <p>Facharzt f&uuml;r Frauenheilkunde und Geburtshilfe</p>
    Quelltextansicht
    Code:
    &lt;p&gt;Facharzt f&amp;uuml;r Frauenheilkunde und Geburtshilfe&lt;/p&gt;
    Wo liegt mein Fehler?

  • #2
    Dass du eigentlich HTML-Code ausgeben möchtest, ihn aber wie Text behandelst.

    Kommentar


    • #3
      Ja leider, aber was mache ich falsch?

      Habe auch folgendes versucht. Klappt auch nicht.
      PHP-Code:
       <?php echo htmlspecialchars($row[beschreibung], ENT_QUOTES ENT_HTML401); ?>
      Zuletzt geändert von swsche; 12.12.2013, 20:30.

      Kommentar


      • #4
        htmlspecialchars() dient zur Maskierung von HTML-Steuerzeichen, damit Text korrekt in HTML-Code eingefügt wird. htmlspecialchars() ist aber nicht dafür gedacht, dass du HTML-Code in HTML-Code einfügst.

        Kommentar


        • #5
          Oder genauer gesagt, du gibst diese Zeichen kodiert aus. Siehe dazu auch htmlspecialchars (Beispiele).

          Peter
          Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
          Meine Seite

          Kommentar


          • #6
            Verstehe. Da liegt also der Fehler. Vielen Dank für eure Hilfe.

            Der Hintergrund ist, dass Kunden per HTML-Editor eine Beschreibung eingeben können. Ich wollte verhindern, dass z.B. Javascript Code eingetragen und später beim Seitenaufruf ausgegeben werden kann. Deshalb hatte ich vor das Datenbankergebnis in HTML-Entities zu zerlegen.

            Kommentar


            • #7
              Zitat von swsche Beitrag anzeigen
              Der Hintergrund ist, dass Kunden per HTML-Editor eine Beschreibung eingeben können. Ich wollte verhindern, dass z.B. Javascript Code eingetragen und später beim Seitenaufruf ausgegeben werden kann. Deshalb hatte ich vor das Datenbankergebnis in HTML-Entities zu zerlegen.
              Du musst bereits vor der Speicherung dafür sorgen, dass nur erlaubter HTML-Code enthalten sein darf.

              HTML Purifier - Filter your HTML the standards-compliant way!

              Kommentar


              • #8
                Danke für deinen Tip! Das schaue ich mir mal genau an.

                Aber folgendes sollte doch auch funktionieren.
                PHP-Code:
                <?php
                $insert 
                "INSERT INTO datenbank (beschreibung)
                                
                  VALUES (
                '"
                .mysql_real_escape_string(strip_tags($_POST['beschreibung'],'<b><p><h1><h2><h4><a><img>'))."'
                  )"
                ;
                ?>
                Ich habe nur ein Feld, in dem der Kunde den Editor nutzen kann.

                Kommentar


                • #9
                  strip_tags() reicht nicht aus. Man kann immer noch JavaScript-Code einschleusen!

                  Kommentar


                  • #10
                    Zitat von h3ll Beitrag anzeigen
                    strip_tags() entfernt HTML-Tags. Dann kannst du dir gleich den HTML-Editor sparen und einfach nur eine Textarea zur Eingabe anbieten.
                    Ja stimmt schon, aber ich lasse im Editor ja nur einige Funktionen wie Fett, Kursiv, Unterstrichen, Link, Bild-URL, HR-Linie... zu.
                    Diese werden ja in der [COLOR=#000000][COLOR=#0000CC]strip_tags[/COLOR][COLOR=#006600] [/COLOR][/COLOR]Funktion erlaubt.

                    Kommentar


                    • #11
                      Zitat von h3ll Beitrag anzeigen
                      strip_tags() reicht nicht aus. Man kann immer noch JavaScript-Code einschleusen!
                      Auch wenn ich <script> nicht erlaube?

                      Kommentar


                      • #12
                        Zitat von swsche Beitrag anzeigen
                        Auch wenn ich <script> nicht erlaube?
                        Ja.

                        zB.
                        HTML-Code:
                        <a href="link.html" onclick="/* hier mein böser JavaScript-Code */">Klick mich</a>

                        Kommentar

                        Lädt...
                        X