Martin: include Datei adressieren vs. img src adressieren

Hallo,

ich habe eine Domain www.example.com mit subdomains abc.example.com, def.example.com usw.

DOCUMENT_ROOT ist jeweils:

/home/example/www.example.com/docs
/home/example/abc.example.com/docs
/home/example/def.example.com/docs

usw.

in /home/example/abc.example.com/docs steht die folgende Datei:

<?php require "../../www.example.com/docs/scripts/include.inc" ?>

<html>

<body>
    <img src = "../../www.example.com/docs/images/image.jpg" >
    </body>

</html>

Jetzt das Problem:

require funktioniert, aber das Bild wird nicht gefunden.
Javascripts an entsprechender Stelle werden auch nicht gefunden.
Hat das seine Richtigkeit, kann man die img src bzw javascript src so nicht adressieren, oder hab ich da was falsch gemacht?

Gruß und Dank

Martin

  1. Hello,

    require funktioniert, aber das Bild wird nicht gefunden.

    Require "guckt von innen", der Image-Tag doch wohlk aber "von außen", oder?

    Harzliche Grüße vom Berg
    http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau

  2. Hallo Martin.

    DOCUMENT_ROOT ist jeweils:

    /home/example/abc.example.com/docs
    […]
        <img src = "../../www.example.com/docs/images/image.jpg" >
        </body>

    </html>

    Jetzt das Problem:

    require funktioniert, aber das Bild wird nicht gefunden.

    Natürlich nicht. Da DOCUMENT_ROOT auf „/home/example/abc.example.com/docs/“ gesetzt wurde, dürfen Anfragen im HTTP-Kontext auch nur bis dorthin aufsteigen.
    Wäre dem nicht so, könnte ein jeder völlig frei auf Dateisystemebene agieren und tatsächlich Dateien auslesen.

    Anschaulicher:

    Dateisystem                        | HTTP (Server)
      --------------------------------------------------
      /home/example/abc.example.com/docs | /
      --------------------------------------------------
      /                                  | Nicht erreichbar, sofern DOCUMENT_ROOT nicht „/“

    Willst du also das Bild adressieren, musst du schon den Umweg über HTTP machen, also „http://www.example.com/images/image.jpg“ im src-Attribut notieren.

    Einen schönen Sonntag noch.

    Gruß, Ashura

    --
    sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
    „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
    [HTML Design Constraints: Logical Markup]
    1. Willst du also das Bild adressieren, musst du schon den Umweg über HTTP machen, also „http://www.example.com/images/image.jpg“ im src-Attribut notieren.

      Danke Ashura. Javascripts muss ich dann wohl auch so adressieren.

      Jetzt fangen aber die Probleme erst an: Ich habe ein Hauptdokument und einen iframe. in beiden gibt es javascripts, die jetzt über HTTP adressiert werden müssen. Wie es scheint verstehen sich die beiden Scripts jetzt nicht mehr. Wenn ich im Hauptdokument <div id="idDingsbums"> habe (per DOM generiert), dann erkennt das Script im iframe anscheinend nicht mehr parent.getElementById("idDingsbums"). Ich krieg da als Fehlermeldung "Zugriff verweigert". Oder sollte es das Div doch erkennen, liegt der Fehler woanders?

      Martin

      1. echo $begrüßung;

        Wenn ich im Hauptdokument <div id="idDingsbums"> habe (per DOM generiert), dann erkennt das Script im iframe anscheinend nicht mehr parent.getElementById("idDingsbums").

        Wenn du mit Javascript von Dokumenten, die von einer Domain stammen, auf Dokumente zugreifen willst, die von einer anderen Domain stammen, dann bekommst du aus dem guten Grund, der sich Same-Origin-Policy nennt, ein

        "Zugriff verweigert"

        echo "$verabschiedung $name";