Gerhard: Validierung

Hallo,

der HTML Validator 4.01 Transitional schreit bei diesem img-Tag:

<img src="http://www.lj-dechantskirchen.at/system-cgi/count/count.php?id=5&x=5&y=5&size=10&bg=9900cc&fg=white&lenght=4&transbg=true">

Warnungen
Zeile 119, Spalte 83: Kann keinen Systembezeichner für die allgemeine Entität "x" erzeugen

Zeile 119, Spalte 87: Kann keinen Systembezeichner für die allgemeine Entität "y" erzeugen

Zeile 119, Spalte 91: Kann keinen Systembezeichner für die allgemeine Entität "size" erzeugen

Zeile 119, Spalte 99: Kann keinen Systembezeichner für die allgemeine Entität "bg" erzeugen

Zeile 119, Spalte 109: Kann keinen Systembezeichner für die allgemeine Entität "fg" erzeugen

Zeile 119, Spalte 118: Kann keinen Systembezeichner für die allgemeine Entität "lenght" erzeugen

Zeile 119, Spalte 127: Kann keinen Systembezeichner für die allgemeine Entität "transbg" erzeugen

Was passt ihm nicht und wie kann man das beheben?
lg Gerhard

  1. Moin,

    <img src="http://www.lj-dechantskirchen.at/system-cgi/count/count.php?id=5&x=5&y=5&size=10&bg=9900cc&fg=white&lenght=4&transbg=true">

    ersetze mal die & durch &amp;

    regds
    Mike©

    --
    Freunde kommen und gehen. Feinde sammeln sich an.
  2. Hi,

    <img src="http://www.lj-dechantskirchen.at/system-cgi/count/count.php?id=5&x=5&y=5&size=10&bg=9900cc&fg=white&lenght=4&transbg=true">
    Was passt ihm nicht

    das Zeichen "&" ist in HTML ein Sonderzeichen: Es dient der Einleitung einer Entity. Wie in jedem Zusammenhang muss jedes Sonderzeichen kodiert werden, wenn es nicht in seiner Sonderbedeutung gemeint ist.

    und wie kann man das beheben?

    Ersetze das Zeichen durch die für "&" zuständige Entity. Übrigens fehlt dem <img>-Tag auch das alt-Attribut; ich nehme aber mal an, das hast Du nur der Übersicht wegen weg gelassen :-)

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Übrigens fehlt dem <img>-Tag auch das alt-Attribut; ich nehme aber mal an, das hast Du nur der Übersicht wegen weg gelassen :-)

      Ja dass es für euch besser zu lesen ist ;-)

      Danke
      lg Gerhard

      1. Hi,

        Ja dass es für euch besser zu lesen ist ;-)

        das Problem ist, dass wir gerade die Fehler am besten lesen können, auch die, die nicht gepostet werden ;-) Ist Dir die Sache mit der Maskierung - auch unabhängig von HTML - denn jetzt klarer?

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Schon, ich habs leider noch nicht ausprobieren können.
          Aber wenn ich dann statt "&" "&amp;" schreibe, dann wird ja der Link nicht korrekt aufgerufen oder?

          1. Schon, ich habs leider noch nicht ausprobieren können.
            Aber wenn ich dann statt "&" "&amp;" schreibe, dann wird ja der Link nicht korrekt aufgerufen oder?

            Wieso nicht?

            Struppi.

            1. Wie gesagt, ich habe leider noch nicht die Möglichkeit gehabt es auszuprobieren. Wenn ihr das sagt dann wird es schon so stimmen.

          2. Ahoi Gerhard,

            Aber wenn ich dann statt "&" "&amp;" schreibe, dann wird ja der Link nicht korrekt aufgerufen oder?

            dacht ich vor nicht alzulanger zeit auch, ist aber nicht der fall, der link funktioniert weiterhin.

            MfG

          3. Hi,

            Aber wenn ich dann statt "&" "&amp;" schreibe, dann wird ja der Link nicht korrekt aufgerufen oder?

            solange das "&" HTML-kodiert ist, handelt es sich um HTML, nicht um eine URL. Wenn ein System - beispielsweise ein Browser - aus dem HTML-Code eine URL machen möchte, muss er eine HTML-Dekodierung vornehmen. Genau[1] das gleiche passiert, wenn Du mit einer Programmiersprache einen String ausgeben möchtest, der ein Anführungszeichen enthält: Innerhalb des Strings ist das Anführungszeichen mit (i.d.R.) einem Backslash maskiert, der in der Ausgabe nicht auftaucht. Das System ist identisch.

            Cheatah

            [1] Um nicht zu sagen: exakt.

            --
            X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
            X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
            1. solange das "&" HTML-kodiert ist, handelt es sich um HTML, nicht um eine URL. Wenn ein System - beispielsweise ein Browser - aus dem HTML-Code eine URL machen möchte, muss er eine HTML-Dekodierung vornehmen. Genau[1] das gleiche passiert, wenn Du mit einer Programmiersprache einen String ausgeben möchtest, der ein Anführungszeichen enthält: Innerhalb des Strings ist das Anführungszeichen mit (i.d.R.) einem Backslash maskiert, der in der Ausgabe nicht auftaucht. Das System ist identisch.

              Ja das System dieser schützenden bzw. codierten Zeichen ist mir schon klar. Nur war ich mir nicht sicher ob eine Dekodierung wirklich durchgeführt wird wenn es sich um einen link handelt. Das heißt jetzt aber auch dass ich keine Datei die ich über einen Link aufrufen will einen codierten HTMl-Umlaut im Namen enthalten darf.
              Obwohl das niemand jemals machen würde, aber das hatte mich stutzig gemacht.
              Danke nochmal für die Erklärung
              lg Gerhard

              1. Hi,

                Nur war ich mir nicht sicher ob eine Dekodierung wirklich durchgeführt wird wenn es sich um einen link handelt.

                dem ist ja auch nicht so. Die Dekodierung wird durchgeführt, wenn es sich um einen HTML-Client handelt - absolut unabhängig davon, ob es nun ein Link ist oder irgend etwas anderes. Ein Link unterscheidet sich diesbezüglich in nichts von z.B. Fließtext: auch dort muss eine URL, wenn Du sie ausgegeben haben möchtest, HTML-kodiert werden und wird vor der Darstellung HTML-dekodiert.

                Das heißt jetzt aber auch dass ich keine Datei die ich über einen Link aufrufen will einen codierten HTMl-Umlaut im Namen enthalten darf.

                Natürlich nicht, denn wenn der Umlaut des Dateinamen in den Kontext einer URL gebracht wird, muss er URL-kodiert werden. Damit bleiben das Prozentzeichen, Buchstaben und Ziffern übrig, die im HTML-Kontext unkritisch sind und somit nicht HTML-kodiert werden müssen. Eigentlich ganz einfach :-)

                Cheatah

                --
                X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
                X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
                X-Will-Answer-Email: No
                X-Please-Search-Archive-First: Absolutely Yes
                1. AAhhhhhhhh!
                  Jetz hab ichs geschnallt.

                2. wenn der Umlaut des Dateinamen in den Kontext einer URL gebracht wird, muss er URL-kodiert werden.

                  Nö, Cheatah, warum denn? Ein Link auf die Ressource example.net/ä kann auch so
                    <a href="http://example.net/ä">
                  oder so
                    <a href="http://example.net/&auml;">
                  gesetzt werden.

                  Live long and prosper,
                  Gunnar

                  --
                  „Weisheit ist nicht das Ergebnis der Schulbildung, sondern des lebenslangen Versuchs, sie zu erwerben.“ (Albert Einstein)
                  1. Ein Link auf die Ressource example.net/ä kann auch so
                      <a href="http://example.net/ä">
                    oder so
                      <a href="http://example.net/&auml;">
                    gesetzt werden.

                    Oder auch nicht: „ranges of ALPHA (%41-%5A and %61-%7A)“ [RFC3986]

                    Erst nachlesen, dann denken, dan posten.

                    Sorry.

                    Live long and prosper,
                    Gunnar

                    --
                    „Weisheit ist nicht das Ergebnis der Schulbildung, sondern des lebenslangen Versuchs, sie zu erwerben.“ (Albert Einstein)
  3. Hallo Gerhard,
    Das Problem wird Dich bei Sessions etc. auch begleiten Du mußt also mit ini_set oder in der php.ini die Parameter arg_separator.output und arg_separator.input auch entsprechend anpassen.

    Darf ich Deine Webseite mal in Bezug auf die von mir in https://forum.selfhtml.org/?t=112265&m=709147 geschilderten Risiken hin überprüfen?

    Viele Grüße TomIRL

    1. Du kannst die Website so lange prüfen wie du willst, ich verwende dieses System jedoch nicht.
      lg Gerhard

      1. Du kannst die Website so lange prüfen wie du willst, ich verwende dieses System jedoch nicht.

        moin,
        Deine Antwort ist ein ziemlich eindeutiges Zeichen dafür, dass Du überhaupt nicht den Sinn meiner Antwort verstanden hast!
        Auch wenn Du das "System" nicht verwendest bleiben die Risiken bei einer Übergabe von Variablen bestehen.
        Und wenn die obige Webseite Deine ist, dann verwendest Du zumindest die übergabe von Variablen mittels GET!
        Du hast also bei entsprechender Programmierung die gleichen Risiken.
        Soweit so klar?

        TomIRL

        1. Dieser img-Tag ist der Einzige auf der ganzen Website der solche GET-Übergaben verwendet.
          Es handelt sich dabei um einen Counter, den ich nicht selber programmiert habe und von einer externen Seite einbinde. Ansonsten handelt es sich um statischen Inhalt.
          lg Gerhard