# Include PHP Befehl Problem



## swiz (1. Juli 2003)

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


----------



## Karl Förster (1. Juli 2003)

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.


----------



## swiz (1. Juli 2003)

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.


----------



## Karl Förster (1. Juli 2003)

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

$doc_root = "../";

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

?>
```

*Datei: ./includes/datei.php *

```
<?php

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

?>
```


----------



## swiz (1. Juli 2003)

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


----------



## Karl Förster (1. Juli 2003)

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


```
<img src="<?php echo $doc_root; ?>images/bild.jpg" />
```


----------



## swiz (1. Juli 2003)

Danke workaholic, ich werde deinen Vorschlag mal ausprobieren!

Greets
swiz


----------



## hawedi (29. Oktober 2004)

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.


----------



## jahlives (8. Dezember 2004)

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


----------

