matuoso: Ausgabe von HTML-Code

Hallo,

Meine Frage ist eigentlich recht simpel und eigentlich eher optischer Natur: Meine Seite (nennen wir sie einfach index.php) hat ein Standard-HTML-Gerüst (head, body, ...). Ein Teil des Contents wird aber in PHP generiert (Bsp. siehe unten).

Wenn ich in meinem Browser dann auf "Quelltext anzeigen" klicke, ist der gesamte HTML-Code, der über echo ausgegeben wird aneinander geklatscht.

Gibt es eine Möglichkeit auch hier Einrückung u.Ä. zu beachten?

Bsp: echo '<option selected="selected">'.$row["direction"].'</option>';

Gruß

  1. Tach!

    Wenn ich in meinem Browser dann auf "Quelltext anzeigen" klicke, ist der gesamte HTML-Code, der über echo ausgegeben wird aneinander geklatscht.
    Gibt es eine Möglichkeit auch hier Einrückung u.Ä. zu beachten?

    Na klar, Tabs und Linefeeds einfügen.

    dedlfix.

  2. Om nah hoo pez nyeetz, matuoso!

    Wenn ich in meinem Browser dann auf "Quelltext anzeigen" klicke, ist der gesamte HTML-Code, der über echo ausgegeben wird aneinander geklatscht.
    Gibt es eine Möglichkeit auch hier Einrückung u.Ä. zu beachten?

    Ja. Code nicht über echo ausgeben.

    Bsp: echo '<option selected="selected">'.$row["direction"].'</option>';

    Bsp: ~~~ <option selected="selected"><?=$row["direction"]?></option>

    Matthias
    
    -- 
    Der Unterschied zwischen Java und JavaScript ist größer als der zwischen [Tal und Talg](http://selfhtml.apsel-mv.de/java-javascript/index.php?buchstabe=T#tal).  
    ![](http://www.billiger-im-urlaub.de/kreis_sw.gif)  
    
    
    1. Lieber Matthias Apsel,

      Bsp: <option selected="selected"><?=$row["direction"]?></option>

      wo beachtest Du da einen Kontext-Wechsel?

      Liebe Grüße,

      Felix Riesterer.

      --
      ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
  3. Lieber matuoso,

    entweder Du lässt HTML Tidy drüberlaufen (sofern verfügbar), oder Du musst - wie dedlfix schon anmerkte - die Steuerzeichen selbst in Deine Strings einfügen.

    Bsp: echo '<option selected="selected">'.$row["direction"].'</option>';

    Gegen-Beispiel:

    printf(  
        "\t<option selected=\"selected\">%s</option>\r\n",  
        htmlspecialchars($row['direction'])  
    );
    

    Vergiss nicht die kontext-gerechte Kodierung! Die DB-Inhalte sind sicherlich "reine" Daten, die nicht als "HTML-freundliche" Strings (mit passenden Steuerzeichen-Maskierungen) gespeichert wurden, oder?

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. Hallo H. Riesterer,

      "direction" enthält entweder das Wort "right" oder "left".
      Ich verstehe die genaue Bedeutung ihres Gegen-Beispiels nicht. Welchen Vorteil bringt die Verwendung von htmlspecialchars?

      1. Lieber matuoso,

        Hallo H. Riesterer,

        kennen wir uns?

        "direction" enthält entweder das Wort "right" oder "left".

        Das ist sowas von unwichtig, da kann von mir aus drinstehen, was will.

        Ich verstehe die genaue Bedeutung ihres Gegen-Beispiels nicht.

        Inwiefern? Ist der Gebrauch von Steuerzeichen nicht erkennbar geworden? Ist die Verwendung von printf() eine Verständnishürde? Beides lässt sich prima recherchieren.

        Welchen Vorteil bringt die Verwendung von htmlspecialchars?

        Du hast anscheinend meinen Link nicht angeklickt, bzw. gedacht, dass ich den nur zum Spaß eingefügt habe. Schade, denn dort steht eine Menge Wissenswertes für Neulinge.

        Liebe Grüße,

        Felix Riesterer.

        --
        ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
        1. kennen wir uns?

          Nein und ich wüsste auch nicht, warum Sie das vermuten.

          Du hast anscheinend meinen Link nicht angeklickt, bzw. gedacht, dass ich den nur zum Spaß eingefügt habe.

          Nein, das dachte ich nicht und es gibt auch hier keinen Grund, warum Sie das vermuten sollten. Die Angabe, was "direction" enthält, ist für meine Frage nämlich schon interessant und nicht egal. Und nein, weder die Verwendung von Steuerzeichen, noch die Funktion "printf" stellen für mich ein Problem dar, was mein Beitrag aber auch nicht impliziert, lediglich die Verwendung von "htmlspecialchars" in diesem konkreten Fall, hat sich mir nicht erschlossen.

          printf(  
              "\t<option selected=\"selected\">%s</option>\r\n",  
              htmlspecialchars($row['direction'])  
          );
          
          printf(  
              "\t<option selected=\"selected\">%s</option>\r\n",  
              $row['direction']  
          );
          

          Wenn man bedenkt, was $row['direction'] enthält ("right" oder "left"), wäre die Verwendung von htmlspecialchars doch eigentlich nicht nötig, oder? Ich habe, entgegen ihrer Vermutung, doch etwas recherchiert, weil ich mich für die Materie interessiere, aber noch relativ wenig Wissen über Grundkenntnisse hinaus besitze. Die Funktion wandelt ja nur die hier erwähnten Zeichen um, die in dem String, der nur aus einem Wort besteht, nicht vorkommen.

          Ich muss mich dafür entschuldigen, meine Frage nicht ausführlich genug gestellt zu haben. Ich würde mich über eine Beantwortung dennoch sehr freuen.

          1. Om nah hoo pez nyeetz, matuoso!

            kennen wir uns?
            Nein und ich wüsste auch nicht, warum Sie das vermuten.

            Weil du ihn mit H. Riesterer angesprochen hast.

            Es ist hier üblich, einander zu duzen.

            $row['direction'] sieht so aus, als ob es (beliebige) Daten aus einer Datenbank sind, die du in ein HTML-Dokument ausgeben möchtest und da darf ein "<" eben nicht als "<" sondern muss als "&lt;" geschrieben werden.

            Wenn sichergestellt ist, dass tatsächlich nur "right" oder "left" drinsteht, braucht man an dieser Stelle keinen Kontextwechsel zu beachten.

            Matthias

            --
            Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Gast und Gastritis.

            1. Lieber Matthias Apsel,

              Wenn sichergestellt ist, dass tatsächlich nur "right" oder "left" drinsteht, braucht man an dieser Stelle keinen Kontextwechsel zu beachten.

              warum sollte ich hier von einem grundsätzlich sinnvollen Vorgehen wegen Bequemlichkeit abweichen? Und wer garantiert mir oder dem OP, dass die Werte auch in Zukunft immer genau so bleiben? Vielleicht kommt in der "Evolution" des Programms irgendwann einmal ein Wechsel des Schlüsselnamens, der in der Folge auch zu anderen Werten führt...?

              Liebe Grüße,

              Felix Riesterer.

              --
              ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
              1. Tach!

                warum sollte ich hier von einem grundsätzlich sinnvollen Vorgehen wegen Bequemlichkeit abweichen? Und wer garantiert mir oder dem OP, dass die Werte auch in Zukunft immer genau so bleiben? Vielleicht kommt in der "Evolution" des Programms irgendwann einmal ein Wechsel des Schlüsselnamens, der in der Folge auch zu anderen Werten führt...?

                Wie auch immer, der OP ist sich des Problems bewusst, alles andere ist nun seine Sache. - Bitte weitergehen, hier gibt es nichts mehr zu sehen!

                dedlfix.

  4. Quelltext mit Firebug o.ä. ansehen.

    Cheers,
    Baba