[HTML] Code abrenzen

meisteralex

Lieutenant
Registriert
Juni 2003
Beiträge
552
Hi Leute, ich möchte in meinem CMS die möglichkeit bieten HTML zu benutzen


Jetzt habe ich das Problem, das das HTML in eine vorhandenen Tabellenstrucktur geparsed werden soll.
Also so z.b:
Code:
<table>
<tr><td>Headerbeschreibung</td></tr>

<tr><td>{geparstes HTML}</td></tr>
</table>

Hält man sich an den HTML Syntax ist das auch kein Problem, nur verwendet einer als zu parsendes HTML z.B.

Code:
</table><table width="0%">

sprengt dieses den äußeren Rahmen

Nun meine Frage wie man sowas verhindern kann ? Frames kommen für mich nicht in Frage!
 
AW: HTML-Code abrenzen

Um solche Unzugänglichkeiten zu verhindern, nutzt man bbcode, wie z.B. auch hier im Forum. In einem CMS sollte im Idealfall überhaupt kein html stehen.

Zudem scheint mir der allgemeine HTML-Code nicht gut gelöst bei Dir zu sein. Im Normalfall braucht man nicht für jede Überschrift eine eigene Zeile (tr), das ist "alte-Schule HTML" ;)
 
AW: HTML-Code abrenzen

?was hat das denn jetzt damit zu tun ?
ich finde tabellen sind teilweise immer noch das beste mittel webseiten zu gestalten aber das steht doch hier gar nicht zur diskusion.

bbcode verwende ich auch in dem cms, nur ich wollte es zusätzlich noch ermöglichen html zu verwenden
 
AW: HTML-Code abrenzen

Naja, ob BBcode oder HTML gespeichert wird, ist Pott wie Deckel, beides sind Markups und sind daher grundsätzlich problematisch.
Die einfachste Lösung für das Problem ist die Daten auf Validität zu prüfen, indem man sie in ein "nacktes" Template packt und durch einen Validator jagd, auf diese Weise verhindert man u.a. Versuche aus dem Layout auszubrechen. Natürlich verhindert eine Validierung keine "Sabotage", die bspw. die vorgegebene maximale Breite des Content-Bereichs übersteigt, dagegen helfen nur Workflows mit manueller Freigabe durch eine oder mehrere Kontrollinstanzen.

greetings, Keita
 
AW: HTML-Code abrenzen

Die meisten mir bekannten BBcode-Klassen überprüfen, ob es zu jedem geöffneten Tag einen geschlossenen gibt. Von problematischem Markup kann also keine Rede sein.

Bei HTML dürfte das ähnlich funktionieren, also eine Funktion zu schreiben, die geöffnete auf geschlossene Tags prüft. Das ist zwar keine deppensichere Lösung, also zum Beispiel versagt das wenn jemand schreibt "<tr><td>LALA</tr></td>", aber wäre ein guter Anfang. Vielleicht hast du die Möglichkeit dir mal anzugucken wie diverse Forensysteme das mit BBCode lösen. Meistens hat man da einen Button, der automatisch alle offen gelassenen Tags schließt.
 
Zuletzt bearbeitet:
AW: HTML-Code abrenzen

Alle DTD-, Schema- oder RelaxNG-basierte Validatoren überprüfen, ob HTML-Tags geschlosen sind, insofern wäre HTML auch aus dieser Sicht unproblematisch... Dennoch bleibt Markup - egal welcher Couleur - problematisch, es ist schlicht ein immanentes Problem.

greetings, Keita
 
AW: HTML-Code abrenzen

hmm warum gibt es denn nicht einfach sowas wie einen container, indem jegliches html "für sich" interpretiert wird? weißt jemand wie das ebay macht ?
 
AW: HTML-Code abrenzen

Ja, daher schon meine eingangs erwähnte Aussage mit bbcodes. Grundsätzlich wird dann im CMS html verboten und innerhalb des bbcode-tags [html1]...[/html1] (bewusst die 1 angehängt, damit das Forum es nicht wirklich als html interpretiert), ist html wieder erlaubt.

Dass man mit bbcodes ein Seitenlayout natürlich auch zerstören kann, indem man beispielsweise
öffnet und nicht schließt, stimmt selbstverständlich, doch sind bbcode-elemente oft als eigener Button (eigenes Icon) im CMS zugänglich, so dass man aktiv drauf klickt und meistens auch nur einen Text zwischen den Tags schreibt, da direkt der geöffnete und geschlossene Tag ausgegeben wird.

Wie Keita schon beschrieb, handelt es sich hierbei um ein immanentes Problem. Man muss hier wohl auch ein klein wenig auf den Menschenverstand appellieren.

Und zum Kommentar mit den Tabellen:
Dies war lediglich ein Tipp, um aus dem Gestrüpp von table, tr und td Abschied zu nehmen. Hier sind nämlich gleich drei Tags im Spiel, die quasi untereinander abhängig sind.
 
Zurück
Oben