Michael: $_SERVER['SERVER_NAME'] als Weiche, für das richtige Ausliefern der Daten

Mehrere URLs zeigen auf das gleiches Verzeichnis.

Um die richtigen Daten auszuliefern, muss ich wissen welche Domain aufgerufen wurde.

Meine Idee ist es die Variable $_SERVER['SERVER_NAME'] zu nehmen.

Je nach Inhalt den jeweiligen Code auszugeben.

Gibt es da Probleme die Auftauchen könnten?

Michael

PS: Sorry für meine Fragen quer durch den Gemüsegarten

  1. Um die richtigen Daten auszuliefern, muss ich wissen welche Domain aufgerufen wurde.

    Es kann, besser wird, mit Deinem Ansinnen Probleme geben.

    Nämlich dann, wenn der Hoster oder ein Admin den Kasten auf PHP.net gelesen hat,

    Hinweis: Unter Apache 2 müssen UseCanonicalName = On und ServerName gesetzt werden. Ansonsten reflektiert dieser Wert den Hostnamen, der vom Client gesendet wurde und vorgetäuscht werden kann. Es ist nicht sicher, sich in einem sicherheitsabhängigen Umfeld auf diesen Wert zu verlassen.

    und also die Einstellungen aus der ersten Zeile trifft. Dann bekommst Du z.B. foo.example.com geliefert, wenn der ServerAlias bar.example.com „requestet“ wurde.

    Was Du willst ist vermutlich $_SERVER['HTTP_HOST']. Das ist stets der mit dem HTTP-Protokoll gelieferte Hostname, also der Servername aus dem Request, Deinen Worten nach, was Du suchst.

    Im Übrigen kommen die Inhalte von $_SERVER, wie der Name auch sagt, eigentlich vom Server, das gilt auch für $_SERVER['HTTP_HOST']

    Hinweis: $_SERVER['HTTP_HOST'] steht nicht wirklich in der Doc, Du musst das also von Server zu Server testen.

    PS: Sorry für meine Fragen quer durch den Gemüsegarten

    Mir gefällt das gerade. Und das ist beim Thema notwendig so, eben weil gerade da Alles mit Allem zu tun.

    1. Hallo Raketenwilli,

      Du meinst diesen Kasten?

      Hinweis: Unter Apache 2 müssen UseCanonicalName = On und
      ServerName gesetzt werden. Ansonsten reflektiert dieser Wert den 
      Hostnamen, der vom Client gesendet wurde und vorgetäuscht werden
      kann. Es ist nicht sicher, sich in einem sicherheitsabhängigen 
      Umfeld auf diesen Wert zu verlassen.
      

      Aber was passiert denn, wenn ich mehrere Virtual Hosts im Apache definiere und die alle auf die gleiche Codebasis loslasse? Führt der canonical name dann dazu, dass für alle der gleiche SERVER_HOST gesetzt wird? Ich bin hier von keinerlei Ahnung belastet.

      Der Sinn von UseCanonicalName war aber doch, ein spoofing des Hostname-Headers durch böse Clients zu vermeiden, d.h. Aufruf von site1.example.com/dings.html und im hostname Header steht site1.example.com. D.h. man braucht eine Lösung, die vom hostname Header unabhängig ist, find ich.

      Rolf

      --
      sumpsi - posui - obstruxi
      1. Ja. Den.

        Hinweis: Unter Apache 2 müssen UseCanonicalName = On und
        ServerName gesetzt werden. Ansonsten reflektiert dieser Wert den 
        Hostnamen, der vom Client gesendet wurde und vorgetäuscht werden
        kann. Es ist nicht sicher, sich in einem sicherheitsabhängigen 
        Umfeld auf diesen Wert zu verlassen.
        

        Aber was passiert denn, wenn ich mehrere Virtual Hosts im Apache definiere und die alle auf die gleiche Codebasis loslasse? Führt der canonical name dann dazu, dass für alle der gleiche SERVER_HOST gesetzt wird?

        • Wenn Du dort JEWEILS den ServerName konfiguriert hast, erscheint mit den oben empfohlenen Erstellungen genau der als $_SERVER['SERVER_NAME'] konfigurierte.
        • Hast Du den antelefonierten Hostname als ServerAliaskonfiguriert, dann erscheint (nur) mit den oben empfohlenen Erstellungen beim Befragen von $_SERVER['SERVER_NAME'] ebenfalls das, was als ServerName konfiguriert wurde, beim Befragen von $_SERVER['HTTP_HOST'] der „antelefonierte Hostname“.
        • Ist für den „antelefonierte Hostname“ gar kein virtueller Host konfiguriert, erscheint mit den obigen Einstellungenn der als ServerName für den _default_host konfigurierte Name.

        D.h. man braucht eine Lösung, die vom hostname Header unabhängig ist, find ich.

        Sven will (aus nachvollziehbaren Gründen) das Gegenteil, er will ja gerade in Abhängigkeit vom Host aus dem HTTP-Request-Header antworten. Zitat: „als Weiche, für das richtige Ausliefern der Daten“

        1. Hallo,

          Sven will

          nenn ihn Theo, wie TO = Thread opener…

          Gruß
          Kalk

          1. Hallo,

            Sven will

            Ok. Michael.

            nenn ihn Theo, wie TO = Thread opener…

            Namen sind Schall und Rauch. Titel nur Gehupe.

            Im Ernst: Bei dem, was darzustellen war, ist auf Grund der sich kreuzenden Abhängigkeiten und resultierenden logischen Fallen einfach nicht mehr genug Aufmerksamkeit für den Name übrig geblieben. Michael möge also nicht beleidigt sein.