Include PHP Befehl Problem

swiz

Grünschnabel
Hallo Leute

Folgendes Problem:

Ich möchte auf all meinen Seiten einer Webpage einen Header (header.php) per INCLUDE Befehl einbinden. Dies funktioniert soweit ohne Probleme. Das Problem ist aber, dass diese Seiten alle in einem anderen Verzeichnis sind.

Also z.B. möchte ich die header.php Seite in folgenden Pages includen
C:\www\webpage\index.php
C:\www\webpage\sortiment\index.php

Der Header befindet sich unter
C:\www\webpage\headers\header.php

Und hier ist das Problem. Der Include fügt den Header in die bestehende Seite ein und passt somit auch den Pfad der Bilder und Link auf den Pfad der index.php Seite an. Mit den Beispielpfaden oben findet er zwar die Bilder und Links im C:\www\webpage\sortiment\index.php (da sich alle Links auf "../" beziehen) aber im C:\www\webpage\index.php findet er die Bilder und Links natürlich nicht, weil der Pfad dann nicht mehr stimmt.

Kann mir jemand helfen wie ich dies umgehen kann? Ich denke es gibt eine Möglichkeit, dem include Befehl mitzugeben, er soll alle Links im includeten File (header.php) von einem bestimmten Pfad aus eibinden.

Ich hab mir auch schon das include Befehl Tutorial angesehen und bin nicht wirklich auf mein Problem gestossen.

Besten Dank für eure Hilfe.
swiz
 
Mhh also eine Lösung ohne die "../" zu finden wäre super. Ich mache das bisher nach einem festen System:

In jeder Datei (nicht die includeten) lege ich am Anfang den Pfad zum Root-Verzeichnis fest. Dann setz ich einfach vor alle Verlinkungen oder Includes die entsprechende Variable davor. Es ist zwar mehr Arbeit aber ich hab da inzwischen so eine Routine drin, dass mir das gar nicht mehr auffällt.
 
Es ist ja nicht der include, welcher nicht funktioniert. Beim include setz ich auch DOCUMENT_ROOT davor, aber ads bringt ja nichts für die includete seite, denn da sind alle Pfade falsch.
 
Dadurch, dass du die Dateien includest gilt doch das gesetzte DOCUMENT_ROOT auch innerhalb dieser Dateien. Ich verwende das ganze in den Dateien einfach so weiter:

Datei: index.php
PHP:
<?php

$doc_root = "../";

include ($doc_root."includes/datei.php");

?>

Datei: ./includes/datei.php
PHP:
<?php

include ($doc_root."includes/datei2.php");
// Der Pfad ist dann hier ebenfalls "../includes/datei2.php"

?>
 
Danke für deine Hilfe, doch die header.php ist bei mir im normalen HTML Format, diese Pfade werden eben nicht angepasst.

Hier z.B. ein ausschnitt aus dem header.php:

<img name="header_blau_navbar" src="../headers_footers/header_blau_navbar.gif" border="0"

Der Image Pfad stimmt nicht und wird auch nicht angepasst durch deine Lösung, da kein PHP.

Verstehst du mein Problem? Ist halt etwas schwierig zu erklären...

Greets
swiz
 
Ist denn in deiner HTML - Datei kein PHP möglich? Liegt sie nicht auf dem gleichen Server?
Ansonste kannste doch auch das schreiben:

PHP:
<img src="<?php echo $doc_root; ?>images/bild.jpg" />
 
Ich arbeite vorzugsweise mit absoluten Verweisen 'http://www.domain.de/verzeichnis/datei.'
so hatt man die wenigsten Probleme, egal wo die mit include eingebunden Dateien liegen.
 
Geschrieben von hawedi:
Ich arbeite vorzugsweise mit absoluten Verweisen...
Und genau so umgehst du jedes solches Problem. Es ist die sauberste Art mit absoluten Pfadangaben zu arbeiten, denn dann sind deine Scripts portabel. Gemäss Manual sollten eh immer absolute Pfadangaben gemacht werden.

Gruss

tobi
 
Zurück