Thomas Schmieder: HTML-Einbage über Textarea klammern

Beitrag lesen

Hallo neuer Tag, hallo Forum,

Diverse HTML-Tags sind zugelassen. (welche da gefährlich werden könnten, ist mir auch noch nicht ganz klar)

In jedem Fall über eine Positivliste, also alles ausschließen, was du nicht explizit erlaubst. Keine style-Attribute zulassen, sonst kann man ja fast alles machen (z.B. "display:hidden")

soweit so gut. Ich werde bestimmt strip_tags($eingabe,$allowed_taglist); benutzen.
PHP-Tags müssen abgefangen werden und Script-Tags (Java, JavaScript, ASP). Scheinbar ja auch CSS-Tags.

Frage:
Was muss ich vor und nach der Anzeige des Textes (HTML-Code) aus der Textarea tun, damit die übrige Seite von diesem variablen Text nicht zerstört wird. Die Tags im Benutzertext sollen ja nicht _angezeigt_ sondern _ausgeführt_ werden. Wenn jetzt z.B. ein <b> nicht wieder abgeschlossen wird, dann wäre evtl. der gesamte nachfolgende Text fett.

Nicht nur evtl. sondern ganz bestimmt. Du riskierst auf jeden Fall, daß deine Seiten nicht mehr valide sind. Mir fällt jetzt nur ein, daß du überprüfst, ob die Tags abgeschlossen sind. Du suchst also z.B. nach <b>, und wenn du kein </b> findest, dann setzt du es selbst ans ende. Mit PHP sollte soetwas machbar sein, ob es aber im Verhältnis zum nutzen steht, mußt du selbst entscheiden. "Leider" gibt es keinen Tag, der alle vorherigen Tags abschließt.

Ich dachte daran, dass es vielleicht sowas wie "<clear all> gibt und dass dann die Standard-CSS-Angaben für die Seite wieder gelten. Kann ich das nicht irgendwie mit <div class="normal"> oder so erreichen. Wenn ich nach der Anzeige des Inhaltes der Textarea so ein "Normal-CSS" benutze, müssten dadurch doch alle vorherigen Formatierungen wieder ausser Kraft gesetzt sein, oder?

So ganz schwammig sehe ich da eine Lösung, aber sicher bin ich mir nicht. Drum frag ich Euch. Erstmal den Denkbereich erweitern. Jeder Gedanke hilft mir beim Sortieren.

Grüße

Tom