<tr> in <td> verhindern
Fabs
- html
0 Gunnar Bittersmann- php
1 Steel0 Fabs0 Der Martin2 MudGuard
Hallo,
ich lade beliebige Texte aus einer db und zeige diese in einer Tabelle an, wobei in der ersten Spalte eine Angabe zum Text ist und in der zweiten dann der Text an sich.
Jetzt kommt es vor dass Nutzer per Copy&Paste z.B. einen Teil einer anderen Tabelle als Text speichern. Es ist also ein <tr> enthalten.
Damit kommen die Browser dann durcheinander und die angezeigte Tabelle verschiebt sich.
Ich habe bereits um jeden Beitrag ein <div> gesetzt, aber das verhindert die Verschiebungen nicht.
Wie kann ich etwas so kapseln, dass egal was im Text an evtl. Tabellen-Tags enthalten ist, bleibt wie es ist und nicht die eigentliche Tabelle beeinflusst?
Danke
Fabs
@@Fabs:
nuqneH
ich lade beliebige Texte aus einer db und zeige diese in einer Tabelle an
Das tust du wie? Per PHP, nehm ich mal an.
Jetzt kommt es vor dass Nutzer per Copy&Paste z.B. einen Teil einer anderen Tabelle als Text speichern. Es ist also ein <tr> enthalten.
Damit kommen die Browser dann durcheinander und die angezeigte Tabelle verschiebt sich.
Du hast ein viel größeres Problem als die Darstellung.
Du darfst NIEMALS Nutzereingaben "<foo>" so in den HTML-Quelltext schreiben. Wenn du das Sicherheitsloch stopfst, ist auch dein Darstellungsproblem gelöst.
Du willst keine Tags in Nutzereingaben zulassen: strip_tags().
Qapla'
Hoi!
Du willst keine Tags in Nutzereingaben zulassen: strip_tags().
Oder er moechte Text so, wie er eingegeben wurde: htmlspecialchars()
@@Steel:
nuqneH
Du willst keine Tags in Nutzereingaben zulassen: strip_tags().
Oder er moechte Text so, wie er eingegeben wurde: htmlspecialchars()
Nein, das glaube ich nicht.
Warum sollte man 'Lorem <tr> ipsum
' im Quelltext stehen haben wollen und "Lorem <tr> ipsum" anzeigen lassen?
Das ist nur bei sehr seltenen speziellen Anwendungsfällen so, in denen man tatsächlich HTML-Code darstellen möchte, wie in diesem Forum.
Qapla'
Hoi!
wie in diesem Forum.
Korrekt. Ich habe noch kein Forum erlebt, wo nicht frueher oder spaeter Code gepostet wurde. Man muss sich halt entscheiden. Eine Option, Code zu markieren und diesen dann entsprechend auszugeben waere wohl die beste Loesung.
Ich persoenlich tendiere allerdings dazu, strikt auszugeben was Der User eingegeben hat. Wenn dabei 'Lorem <td> ipsum' rauskommt, obwohl Lorem Ipsum gewollt war, muss sich der User fragen lassen: "Warum is dann ein <td> da drin?" Das einige Leute scheinbar etwas anderes eingeben (kopieren) als sie posten wollen, ist deren Problem. Schlimm genug, wenn ich einen Doener ohne Tomaten bestelle und trotzdem kommt mal wieder einer mit Tomaten.
Leute die 'Lorem <td> ipsum' posten und 'Lorem ipsum' erwarten, bestellen explizit Doener mit Tomaten, erwarten aber einen ohne.
Hallo,
Das tust du wie? Per PHP, nehm ich mal an.
korrekt
Du willst keine Tags in Nutzereingaben zulassen:
<script>s und auch <a>s filter ich vorher raus. Damit dürfte das sauber sein, oder?
Aber ich fände es garnicht so doof, wenn z.B. ein <p> und auch ein <table> oder <tr> bleibt, aber eben ohne die darum liegende Tabelle zu beeinflussen
Gruß
Fabs
Hi,
Du willst keine Tags in Nutzereingaben zulassen:
<script>s und auch <a>s filter ich vorher raus. Damit dürfte das sauber sein, oder?
nein, sonst hättest du ja keine Veranlassung, Abhilfe zu suchen.
Aber ich fände es garnicht so doof, wenn z.B. ein <p> und auch ein <table> oder <tr> bleibt, aber eben ohne die darum liegende Tabelle zu beeinflussen
Richtig, ich fände es auch wünschenswert, dass eingegebener Text exakt so erhalten bleibt, wie er eingegeben wurde. Daher rate ich dir ebenso wie Steel auch zu htmlspecialchars().
Ciao,
Martin
Hi,
Du willst keine Tags in Nutzereingaben zulassen:
<script>s und auch <a>s filter ich vorher raus. Damit dürfte das sauber sein, oder?
<span onmouseover="alert('ich bin ein böses Phishing-Script')">Wirklich?</span>
cu,
Andreas