include() und Server variable

SPN_X

Mitglied
Hallo ich habe folgendes Problem:

Meine neue Homepage versuche ich so zu gestalten, dass sie läuft, egal auf welchem server. also egal welche http adresse...

meine PHP Dokumente sind wie folgt aufgebaut: index.php
PHP:
<? $wwwPath = 'http://'.$_SERVER["HTTP_HOST"]; ?>
<? include($wwwPath.'templates/doctype.php'); ?>
<? include($wwwPath.'templates/html-head.php'); ?>

<body>....

html-head:
PHP:
<?                   
   echo '
<head>
 <title>Test</title>
 <link rel="stylesheet" type="text/css" href="'.$wwwPath.'css/style.css">
</head>
   ';
?>

Nun habe ich in HTML-HEAD.php aber auch noch Pfade die ich mit $wwwPath abkürzen will. Er übernimmt aber dort nicht die Variable von index.php. Warum? Ich möchte Redundanz vermeiden und wollte es dort (in html-head.php) nicht nochmal definieren.

Ich könnte es nur einmal in html-head.php definieren, dann würde es im ganzen index.php script funktionieren, aber dann habe ich das problem, das ich für den Pfad zu html-head und zu doctype wieder redundant habe, bzw ne ausgeschriebene adresse :(

Wäre schön wenn ihr mir helfen könntet dieses Problem zu lösen, oder denkansätze zu geben.

Danke
 
schreib den pfad in ne extra-datei, die du in alle dateien includest (relativ, nicht absolut...)
übrigens brauchst du bei allen pfaden oben keine absoluten pfade...
 
Wenn du eine PHP-Datei über das HTTP anfragst, bekommst du nur die Ausgabe des Skripts und nicht den Code. Das geht nur über das Dateisystem.
 
Es gibt da 2 Adressen, die wichtig sind
1. eine Adresse, die sich auf das Filesystem des Servers bezieht
2. eine Adresse, die sich auf die Internetadresse bezieht.

Die erste Adresse erzeuge ich mir über $_SERVER['DOCUMENT_ROOT']. Der Code dafür muss auf jeder Seite stehen.
PHP:
$foundPath = $_SERVER['PHP_SELF'];
$rootDummy = explode("/", $foundPath);
if ($_ENV['COMPUTERNAME']=='TESTSYSTEM') {
	$rootMeinWeb = $_SERVER['DOCUMENT_ROOT'].'/'.$rootDummy[1].'/'.$rootDummy[2].'/'.$rootDummy[3].'/'.$rootDummy[4];
} else {
	$rootMeinWeb = $_SERVER['DOCUMENT_ROOT'].'/'.$rootDummy[1].'/'.$rootDummy[2];
}
Man muss nun selbst herausfinden, ob, und wieviele Verzeichnisebenen ($rootDummy) man weiter gehen muss.
Alle includes funktionieren damit.

Jetzt kann man in eine include-Datei, die man in jede Seite included, die 2. Adresse einfügen:
PHP:
if ($_ENV['COMPUTERNAME']=='TESTSYSTEM') {
	$meine_hostaddr = 'localhost/irgendwas';
} else {
	$meine_hostaddr = 'www.MeineSeite.de';
}
Diese Adresse gilt typischerweise für interne Links.
 
Zurück