Includen aber richtig

hallo,

ich hab folgende fragen:

  1. ich habe auf meinem webspace im verzeichnis x eine header.php und eine footer.php

im verzeichnis y habe ich eine .php datei, die ich nun um die header und footer infos ergänzen möchte.

gehe ich nun in die .php datei und include oben und unten header und footer bekomme ich schonmal annähernd ein ergebnis dargestellt. nur befinden sich grafiken in der header oder footer, so werden diese nicht dargestellt, da die links zu den grafiken automatisch immer im verzeichnis y gesucht werden.

muss ich nun meine herader und footer datei soweit anpassen, dass dort jeweils abolute pfade zu jedem link / zu jeder grafik da stehen?
ich hab mal gesehen das jemand bei verzeichniswechsel im include einfach ./…/datei.php geschrieben hat. kann man sowas nutzen wenn man dasselbe wurzelverzeichnis hat? bei mir hat das nämlich nicht wirklich geklappt irgendwie…

ich hab dann folgendes probiert:

ich habe in meinem x (indem auch header und footer liegt) eine neue php datei erstellt, in der ich nun header, die datei aus dem anderen verzeichnis und die footer datei include:

#####code####

<?php /* Include custom and VWar-Header */
include("./../vwar/\_header.php"); ?\><?php include ("./../webpost/listing.php");
?\><?php /* Include custom Footer */
include("./../vwar/\_footer.php"); ob\_end\_flush(); ?\> ####end#### was dabei rauskommt sieht man hier: [http://jsmnet.de/vwar/ts.php](http://jsmnet.de/vwar/ts.php) ohne header und footer siehts so aus: [http://jsmnet.de/webpost/listing.php](http://jsmnet.de/webpost/listing.php) wo liegt mein fehler?? 2. frage: wie include ich php dateien, die auf einem ganz anderen webspace abgelegt sind?

Das Problem, liegt ion der Baumstrucktur der Verzeichnisse.
Siehe hierzu:
http://www.wer-weiss-was.de/cgi-bin/forum/showarchiv…

Das „…/…/“ hat folgende Bedeutung.

„…“ bedeutet ein verzeichnis höher
„.“ bedeutet eines verzeichnis tiefer.

hi

„…“ bedeutet ein verzeichnis höher

das hier versteh ich ja

„.“ bedeutet eines verzeichnis tiefer.

aber mit „cd .“ bleibe ich unter (meinem) linux im selben verzeichnis?!

mfg TLF

danke. habe auch deinen link gelesen, aber was heisst das jetzt für meinen fall?

so siehts aus:

+ROOT_VERZEICHNIS
++ORDNER_EINS
script1
script das script1 (header info) mit script2 (content) verbinden soll
++ORDNER_ZWEI
script2
(
+++ORDNER_DREI
hier liegt die db_inc.php und die config.php für script2 die im script2 über include ("./*.php"); „angesprochen“ werden.
)

meinen versuch habe ich ja oben schon beschrieben. header wird angezeigt, aber der content liefert db errors. jedes für sich direkt angesprochen läuft 1a.

hoffe du kannst licht in mein dunkel bringen :wink:

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

„.“ bedeutet eines verzeichnis tiefer.

unsinn!!

Du musst imer davon ausgehen das, dass aufgerufene Script in die ebene des Scriptest rutscht in welchem du es aufrufst.

Du musst immer von dem Verzeichnis ausgehen, von welchem aus Du das Script aufrufst.

+ORDNER1
|datei[A]
|
+ORNDER2
|datei[B]
|
|+ORDNER3
|datei[C]

ORDNER3 in ORDNER2
ORDNER2 in ORDNER1

datei[A] in ORDNER1
datei[B] in ORDNER2
datei[C] in ORDNER3

ANWEISUNG:
datei[A] aus ORDNER1 ruft die datei[B] aus ORDNER2 auf.

BEFEHLSZEILE:
include( " ORDNER2/datei[B] " );

ERGEBNIS:

+ORDNER1
|datei[A]
|datei[B]
|
+ORNDER2
|
|+ORDNER3
|datei[C]

ORDNER3 in ORDNER2
ORDNER2 in ORDNER1

datei[A] in ORDNER 1
datei[B] in ORDNER 1 –> rutscht ein Verzeichnis höher
datei[C] in ORDNER3

ANWEISUNG:
datei[B] aus ORDNER1 (ursprünglich aus ORDNER2) ruft die datei[C] aus ORDNER3 auf.

BEFEHLSZEILE:
include( " ORDNER2/ORDNER3/datei[C] " );

ERGEBNIS:

+ORDNER1
|datei[A]
|datei[B]
|datei[C]
|
+ORNDER2
|
|+ORDNER3
|

ORDNER3 in ORDNER2
ORDNER2 in ORDNER1

datei[A] in ORDNER1
datei[B] in ORDNER1
datei[C] in ORDNER 1 –> rutscht zwei Verzeichnisse höher

ANWEISUNG:
datei[C] aus ORDNER1 (ursprünglich aus ORDNER3) ruft die datei[A] aus ORDNER1 auf.

BEFEHLSZEILE:
include( " datei[A] " );

ERGEBNIS:

+ORDNER1
|datei[A]
|datei[B]
|datei[C]
|
+ORNDER2
|
|+ORDNER3
|

ORDNER3 in ORDNER2
ORDNER2 in ORDNER1

datei[A] in ORDNER1
datei[B] in ORDNER1
datei[C] in ORDNER1

FAZIT:
Wenn Du datei[C] mit datei[A] aufrufst und dann mit datei[C] die datei[B] aufrufe willst. musst Du, auch wenn datei[C] in ORDNER3 liegt den Pfand angeben, als würdest Du gleich mit datei[A] die datei[B] aufrufen wollen. Die datei[C] ist lediglich ein Umweg.

Aber um dem ganzen Abhilfe zu schaffen und es zu vereinfachen, gib doch einfach den Absoluten Pfad an. Besser kann ich es leider nicht erklären. Ich hoffe es reicht aus.

Gruß Michael

POST SCRIPTUM: Das mit dem „.“ ein Verzeichnis tiefer, war natürlich Blödsinn, habe es aber zu spät gemerkt.

des rätsels lösung war für meinen fall folgende:

+root
++ordner_vwar
—datei_header.php
—datei_footer.php
++ordner_webpost
—datei_listing.php
—datei_listing1.php

die orginaldatei listing wurde in listing1 umbenannt und folgende neue datei listing erstellt:

include("./../vwar/\_header.php");
include("listing1.php");
include("./../vwar/\_footer.php");

klappt! nur komischerweise verursacht nun die datei

++ordner_webpost
+++ordner_admin
----datei_db_inc.php

einen error beim starten einer session, das script an sich läuft aber.
den fehlerreport habe ich ausgeschaltet

//error_reporting(E_ALL);
//error_reporting (E_ERROR | E_WARNING | E_PARSE);
error_reporting (E_FALSE);

jetzt wird das script ordentlich angezeigt. den error habe ich aber auch nur durch das includen. seltsam. kann das einer erklären?

session\_start();
if ((ini\_get(register\_globals)) == "0") {
 if ((!isset($HTTP\_SESSION\_VARS["adloggedin"])) or ($HTTP\_SESSION\_VARS["adloggedin"] == 'false')) {
 if (($HTTP\_POST\_VARS["adminlogin"] == $setting["admin\_id"]) and ($HTTP\_POST\_VARS["adminpass"] == $setting["admin\_pass"])) {
 $HTTP\_SESSION\_VARS["adloggedin"] = "true";
 } else {
 $HTTP\_SESSION\_VARS["adloggedin"] = "false";
 }
 }
}

bei bedarf schicke ich gern das ganze script zu. ich würde ganz gern den fehler nicht nur ausblenden, sondern ganz tilgen, da er die ausführung meiner includes in der sich anschliessenden _footer.php verhindert.

das ergebnis wäre hier: http://www.jsmnet.de/webpost/listing.php

bei bedarf schalte ich die fehlerunterdrückung auch nochmal aus…

Include empfohlen $DOCUMENT_ROOT Variable
include_once(’./filename.XXX’);

Macht einen Include im gleichen Verzeichnis, in dem die Datei sich befindet, die diesen Aufruf ausführt (die man über den Browser Aufgerufen hat)!

Includes sollten immer die $DOCUMENT_ROOT, bzw. $_SERVER[‚DOCUMENT_ROOT‘] Variable verwenden. Auf diese Weise kann
man auch Dateien per Include reinladen, die nicht im WebRoot/DocRoot
liegen.
Bilder, die in HTML-Dateien verlinkt sind, werden dann natürlich nicht korrekt geladen, d.h. hier muss der relative oder absolute Pfad zur Bild-, Javascript- oder Stylesheet-Datei immer realativ zu dem Webfpad der über den Browser aufgerufenen HTML/PHP Datei angegeben werden.

Hoffe diese Info hilft weiter.
Weitere Info’s zu Include, siehe http://www.php.net/ (Hilfe/Doku)