Fehler durch User-HTML ausschliessen

Eiszwerg

Erfahrenes Mitglied
Moin Community,

ich habe ein mini-kleines Problem, bei dem ich mir nicht sicher bin, ob es in einem relative Aufwand lösbar ist:
User können in ihrem Profil HTML verwenden. Allerdings kann es aufgrund meines Layouts (Tabellen) dazu kommen, dass der User die Tabelle zerschiesst, indem er bestimmte Tags nicht schliesst.
Wie kann ich das verhindern?
Ich möchte die Gestaltungsfreiheit ungerne eingrenzen, aber auch mein Layout nicht mißbildet sehen.

Hat jemand von Euch einen Tip für mich?
 
Entweder du lässt HTML gar nicht zu und greifst zu einem anderen Code (beispielsweise BBCode), oder du sorgst dafür, dass nur gültiges XHTML erlaubt ist. XHTML deswegen, da es der strengeren XML-Syntax genügen muss und deshalb einfacher zu prüfen ist.
 
Soweit ich preg_replace() verstanden habe, kann ich nach verschiedenen BBCodes suchen und durch HTML-Tags ersetzen.
Ich bin allerdings zu schusselig die verschiedenen Patterns (oder wie man es nennt) zusammenzubauen :confused:
Hab's schon häufiger versucht, aber kläglich versagt.

Wenn ich bspw. nach , , [p], [/p], [stron] und [/strong] etc suchen will und die durch entsprechende Tags ersetzen will, weiss ich nicht, wie das Pattern aussehen müsste.

Verstehst Du mein Problem?
 
Mal eine ganz andere Frage (welche wohl eher in den HTML Bereich gehört:
Kann ich das nicht einfach so machen, dass ich den Profil-Text (welcher HTML beinhalten kann) in ein iframe packe? Oder könnte dadurch das Layout um das frame herum beeinflusst werden?

Bin heute scheinbar geistig nicht so auf der Höhe... Man verzeih mir.
 
Wie wär es ganz simpel mit STRIP TAGS ?

PHP:
<?php
 $text = '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>';
 echo strip_tags($text);
 echo "\n";
 
 // Erlaube <p> and <a>
 echo strip_tags($text, '<p><a>');
 ?>

Geklaut aus dem PHP Manual ;)
Dürfte auch sicherer Sein als die Suchen und ersetzen Nummer da nur die erlaubten Tags stehen bleiben.
 
Mal eine ganz andere Frage (welche wohl eher in den HTML Bereich gehört:
Kann ich das nicht einfach so machen, dass ich den Profil-Text (welcher HTML beinhalten kann) in ein iframe packe? Oder könnte dadurch das Layout um das frame herum beeinflusst werden?

Bin heute scheinbar geistig nicht so auf der Höhe... Man verzeih mir.

Wenn er den Iframe vorzeitig schließt, könnte er das durchaus tun.
Aber wie rexxitall schreibt, bei [phpf]strip_tags[/phpf] kannst du Ausnahmen angeben, die nicht gefiltert werden.
 
Nur hilft das nicht, wenn der User es verbockt.
Ich könnte ja ein iframe machen und alle
Code:
<iframe> und </iframe>
aus dem Profiltext entfernen.
Wäre das aus Eure Sicht eine halbwegs akzeptabele Lösung?
 
Zurück