korn: CMS Problem mit "<" und ">"

Hallo Forumsteam!

Vorab einmal: Ich bin mit PHP nicht gerade sehr vertraut.

Mein Problem: Ich habe ein CMS bei einer Homepage und der Content, wo man ihn dann editiert, ist natürlich in einer <textarea> dargestellt.

Also zB: <textarea name="text" class="area">Hier steht der Inhalt der betreffenden Seite</textarea>

Jetzt habe ich aber das Problem, dass bei einigen Seiten im Content ein <textarea>-Element vorkommt. Das heißt, es gibt auch ein schließendes <textarea>-Element und deswegen wird die <textarea> des CMS vorzeitig geschlossen, obwohl es das gar nicht soll!

Lösung des Problems wäre, dass alle "<" als &lt; und alle ">" als &gt; übergeben werden. Im Browser werden sie im CMS dann wieder als "<" und ">" dargestellt. Bei der Übergabe an die Datenbank müssten diese Zeichen dann wieder in "<" und ">" umgewandelt werden.

Doch leider habe ich keine Ahnung, wie ich das programmieren soll :-(

Habt ihr einen Vorschlag? oder eine bessere Idee?

Danke im Voraus,
Korn

--
ie:{ fl:{ br:> va:{ ls:# fo:| rl:( n4:( ss:( de:> js:{ ch:{ sh:} mo:? zu:)
  1. Hallo Korn!

    Du suchst
    http://www.php.net/htmlentities
    Sei dir der Sicherheitsproblematik bewusst. Wenn dein CMS so etwas nicht automatisch macht, ist es vermutlich nicht besonders gut.

    Viele Grüße,
    Ruben

    1. Wenn dein CMS so etwas nicht automatisch macht, ist es vermutlich nicht besonders gut.

      Ist ja auch von mir ;-)

      Danke für deine Hilfe :-)

      --
      ie:{ fl:{ br:> va:{ ls:# fo:| rl:( n4:( ss:( de:> js:{ ch:{ sh:} mo:? zu:)
  2. echo $begrüßung;

    Lösung des Problems wäre, dass alle "<" als &lt; und alle ">" als &gt; übergeben werden.

    htmlspecialchars() heißt die Funktion, die sich unter PHP um die ordnungsgemäße Maskierung der HTML eigenen Zeichen kümmert. Sie ist übrigens nicht nur für Textareas, sondern für alle Werte geeignet, die in den HTML-Kontext gebracht werden sollen.

    Im Browser werden sie im CMS dann wieder als "<" und ">" dargestellt. Bei der Übergabe an die Datenbank müssten diese Zeichen dann wieder in "<" und ">" umgewandelt werden.

    Warum? Hast du dir mal angeschaut, was du in $_POST bzw. $_GET drinstehen hast, wenn deine Textarea - mit wie oben beschrieben ordentlich maskierten HTML-eigenen Zeichen gefüllt - abgesendet wird?

    echo "$verabschiedung $name";

  3. Hallo,

    Jetzt habe ich aber das Problem, dass bei einigen Seiten im Content ein <textarea>-Element vorkommt. Das heißt, es gibt auch ein schließendes <textarea>-Element und deswegen wird die <textarea> des CMS vorzeitig geschlossen, obwohl es das gar nicht soll!

    HTML-Elemente haben grundsätzlich nichts in einer textarea zu suchen.

    Lösung des Problems wäre, dass alle "<" als &lt; und alle ">" als &gt; übergeben werden.

    Das machst du am besten mit htmlspecialchars().

    Im Browser werden sie im CMS dann wieder als "<" und ">" dargestellt.

    Ja.

    Bei der Übergabe an die Datenbank müssten diese Zeichen dann wieder in "<" und ">" umgewandelt werden.

    Nein. Die Zeichen werden so übertragen, wie sie im Browser dargestellt werden (evtl als %xx, was der DB aber egal ist).

    mfg. Daniel