Marco: Eigene Dokumentadresse auslesen

Guten Morgen miteinander,

für meine Problemstellung habe ich zwar viel gesucht, aber nichts gefunden (oder die falsche Frage gestellt...).

Problemstellung:

Auf einer Internetseite wird der <head> Bereich mittels PHP geschrieben. Das soll später bei Änderungen viel Arbeit abnehmen, wenn nur eine PHP Funktion geändert werden muss (und nicht alle Seiten einzeln).

Die Funktion steht nun in einer Datei namens "Funktionen.php". Diese befindet sich im Ordner "www.meine-domain.de/php_Funktionen/".

Die verschiedenen Ausgabeseiten stehen natürlich nicht alle im gleichen Ordner, sondern sind nach Kategorien verteilt:
www.meine-domain.de
   Neuigkeiten/textseiten.php
   wichtigeMeldungen/andereSeiten.php
   ...

Nun möchte ich gern den Pfad der Funktionen.php einbinden, aber eben nicht als "www.meine-domain.de/...", sondern als "../php_Funktionen/Funktionen.php".

Um zu "wissen", wo ich mich (bzw. die Seite sich) befindet, brauche ich (oder eben die Seite) die aktuelle Adresse.
Bei JS liest man dann self.location.href aus, nur brauche ich das für PHP.

Gibt es da Möglichkeiten?

Vielen Dank
Marco

  1. Hello,

    Um zu "wissen", wo ich mich (bzw. die Seite sich) befindet, brauche ich (oder eben die Seite) die aktuelle Adresse.

    Bei JS liest man dann self.location.href aus, nur brauche ich das für PHP.

    Das wäre vermutlich aber falsch, wenn Du Deine PHP-Includes über eine URL, also über HTTP löaufen ließest. Das wäre eventuell, je nach Systemeinrichtung, schon eine ganz gefährliche Sicherheitslücke.

    Du suchst eine Möglichkeit, den Pfad zum Script im lokalen Dateisystem zu qualifizieren. Dazu benötigst Du die Lage des HTTP-Wurzelverzeichnisses, also die

    DOCUMENT ROOT

    Schau bitte im Array der Servervariablen

    $_SERVER[]

    nach, was da passen könnte.

    Noch ein Tipp:
    Da nicht alle Systeme falsch (Normalzustand) eingerichet sind, sondern sich einige auch an POSIX halten, solltest Du sicherstellen, dass die DOCUMENT_ROOT mit genau einem Slash vom nachfolgenden Pfad getrennt ist. Das erreichst Du, indem Du den Slash erst einmal obligatorisch entfernst und dann genau einen anfügst.

    $document_root = trim([SERVERVARIABLE],'/') .'/';

    [SERVERVARIABLE] musst Du bitte ersetzen gegen das passende Element aus dem Array $_SERVER[]

    http://php.net/manual/en/reserved.variables.server.php

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. Hallo Tom,

      vielen Dank für die Info. Ich habe mir ein paar Gedanken gemacht und dadurch ist der Ort der Datei nicht mehr wichtig.
      (Das Nachdenken rührte auch daher, dass die Ergebnisse von $_SERVER[] nicht so waren, wie ich sie gern hätte)

      Das wäre vermutlich aber falsch, wenn Du Deine PHP-Includes über eine URL, also über HTTP löaufen ließest. Das wäre eventuell, je nach Systemeinrichtung, schon eine ganz gefährliche Sicherheitslücke.

      Diese Aussage verstehe ich nicht. Ich habe PHP Scripte bisher immer so eingebunden:

        
      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">  
      <html>  
        <head>  
      [code lang=php]  
        <script language="php">  
        
          include('_php_funktionen_/Kernfunktionen.php');  
          Schreibe_Dateikopf();  
        
        </script>  
      
      

      </head>

      <body>

      <!-- Container der Seite -->

      <div id="Seite">

      <!-- Seitenkopf -->

        
        <script language="php">  
        
          Schreibe_Seitenkopf();  
        
        </script>  
      
      

      <!-- /Seitenkopf -->

      <!-- Navigation -->

        
        <script language="php">  
        
          Schreibe_interne_Verweise();  
        
        </script>  
      
      

      <!-- /Navigation -->

      <!-- Inhalt der Seite -->

      <div id="Inhalt">
              <h1>Herzlich willkommen...</h1>
              <p id="Inhalt_Text">

      ... usw. ...[/code]

      Viele Grüße
      Marco