Flo: includes und .htacess

Hallo Zusammen,

gerade bekomme ich einen mittelschweren Anfall mit PHP.
Wahrscheinlich ist das auf meine lediglich autodidaktischen Kenntnisse
von PHP zurückzuführen.

Problem:

Jede Seite meiner HP hat einen include im footer, der eine
php-datei inkludiert. Diese ist absolut angegeben.
<?include ("http://www.MEINE-HOMEPAGE.de/footer.html")?>

Da ich momentan dafür sorge alle meine Seiten auf .html unmzubauen,
jabe ich per .htacess den Apllication type für html und htm geändert.

Leider klappen die includes nicht mehr richtig.
Seitdem die htaccess oben ist akzeptiert der den footer nicht mehr.
Alle Variablen, die ich von der Siete in den Footer transportieren möchte sind hinüber.
Über relative includes klappts aber noch:
<?include ("./footer.html")?>

in der .htaccess steht nur folgendes:
"AddType application/x-httpd-php .html .htm"

Sch... alle Footer sind hinüber.
Manuelles ändern ausgeschlossen (da über 400 Einzelseiten)

Hab die .htaccess wieder rausgenommen bis eine Lösung da ist.

Vielen Dank schon einmal für Eure Hilfe und...

FROHE WEIHNACHTEN!!!!

Euer Flo

  1. Kleines Update:

    (liegt wohl doch an meinem fehlenden Verständnis für PHP)

    meine Seiten ebstehen aus drei teilen:

    Der eigentlichen Datei

    1.) xyz.php

    in dieser gibt es 2 includes:

    <?include ("http://www.HOMEPAGE.de/header.html")?>
    .....CONTENT......
    <?include ("http://www.HOMEPAGE.de/footer.html")?>

    In der header.html wird eine Variable $head ausgelost.
    Diese muß der Footer auch kennen.
    Da ein einfaches $head=xyz dafür sorgt, dass im footer
    die variable $head undefiniert ist hgabe ich folgendes im header
    gemacht:

    define ("HEADER","$head");

    Im footer.html kann ich die Variable immer noch als HEADER ansprechen und nutzen.

    Das ganze klappt nicht mehr sobald.

    • Die Hauptdatei nicht auf .php endet.
    • header und footer  icht auf .html enden
    • der apllication für html auf php-Datei gesetzt wird.

    Was kann ich tun?

    1. Hallo Flo,

      anfangs habe ich an eine Unmöglichkeit geglaubt, die Du hier beschreibst, aber nun ist mir klar, was da vorsich geht. Hierbei hast Du verschiedene Dinge mit einander kombiniert, die an sich schon nicht ganz einfach sind.

      Include() und artverwandte Funktionen binden Resourcen vor dem Parsen in einen Quellcode. Dabei ist dem Parser egal welcher Art die Eingebundenen Daten sind. Per Default geht er davon aus, es handelt sich um nicht zu parsenden Text. Erst wenn er auf einen öffnenden Tag  (idR: <? oder <?php) trifft, wird der eingebundene Text als PHP-Quellcode interpretiert.

      PHP bringt eine Vielzahl von wrappern mit, die das Einbinden einer Vielzahl verschiedenster Resourcen zuläßt. Durch include('http://www.HOMEPAGE.de/header.html') wird eine wrapper für das HTT-Protokoll aktiviert, um an den Host "www.HOMEPAGE.de" eine Anfrage nach der Datei "/header.html" zu starten. (Im Prinzip nichts anderes, als würde ein Unser mit einem Browser http://www.HOMEPAGE.de/header.html aufsuchen.) Das eigentlich wichtige zum Verständnis dieses Vorgangs ist zu bemerkten, daß der Bezug anders als bei include('./header.html') über einen Webserver abgewickelt wird, und nicht über das Dateisystem.

      Ein Webserver, der eine Anfrage nach einer Datei "/header.html" entgegennimmt, wird diese nach seiner Konfiguration ausliefern. Dazu prüft er welche möglichen Handler und Filter auf ein bestimmtes Dateiformat Anwendung finden sollen und setzt sie vor der Auslieferung ein. In Deinem Falle ist der Webserver so Konfiguriert, daß er Anfragen an das Dateiformat (ausgezeichnet durch die Dateiendungen .htm und .html) text/html wie application/x-httpd-php zu behandeln hat. Er wird also vor der Auslieferung die Datei "/header.html" von PHP interpretieren lassen.

      Dieser Vorgang wird völlig separat zu Deinem Script mit der include-Anweisung ausgeführt. Daher werder die gesetzten Variablen, Konstanten, Dergleichen nicht in die Ausführung Deines Scripts mit einbezogen werden können, sondern alles, was Du tust, ist ein unnötiger, performacelastiger Bezug der Quelldatei "/header.html" über einen Webserver. Ändere Deine 400 Einzelscripte allesamt um und notiere in ihnen include("header.html") und include("footer.html"). Sollten diese besagten Einzelscripte in Strukturen von Unterordnern gestreut sein, wirst Du absolute Angaben zu den einzubindenden Datein benötigen.

      Notiere in die Datein "header.html" und "footer.html" als erste Zeile jeweils:

      <?php echo $_SERVER["PATH_TRANSLATED"]; exit; ?>

      Rufe sie mit Deinem Browser auf. Damit hast Du den absoluten Pfad zu den Datein im Dateisystem, den Du in die Einzelscripte einfügen kannst.

      Gruß aus Berlin!
      eddi

      1. Hallo Flo,

        Ändere Deine 400 Einzelscripte allesamt um und notiere in ihnen
        include("header.html") und include("footer.html"). Sollten diese
        besagten Einzelscripte in Strukturen von Unterordnern gestreut

        Gruß aus Berlin!
        eddi

        Vielen Dank, extrem Ausführlich - jetzt hab' ichs kapiert.

        Habe gestern nacht noch jeweils eine header.txt und eine footer.txt durch kopieren erzeugt und den string "header.html" und "footer.html"
        in allen daten durch die .txt derivate ersetzt.
        Läuft auch prime.

        Aber wenigstens weiß ich jetzt warum das passiert ist!

        VIELEN DANK!

        Flo