Fabs: <tr> in <td> verhindern

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

  1. @@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'

    --
    Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
    (Mark Twain)
    1. Hoi!

      Du willst keine Tags in Nutzereingaben zulassen: strip_tags().

      Oder er moechte Text so, wie er eingegeben wurde: htmlspecialchars()

      --
      Vergesst Chuck Norris.
      Sponge Bob kann unter Wasser grillen!
      1. @@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 &lt;tr&gt; 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'

        --
        Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
        (Mark Twain)
        1. 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.

          --
          Vergesst Chuck Norris.
          Sponge Bob kann unter Wasser grillen!
    2. 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

      1. 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

        --
        Wenn man keine Ahnung hat - einfach mal Fresse halten.
          (Dieter Nuhr, deutscher Kabarettist)
        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
      2. 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

        --
        Warum nennt sich Andreas hier MudGuard?
        O o ostern ...
        Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.