Das machst du am besten, wenn du in jeder Datei eine Variable hast, die von der aktuellen Position auf das Root Verzeichnis zeigt. Diese Variable fügst du dann vor allen Links ein und erhältst die relative Position zur aktuellen.
Bsp:
Im Verzeichnis
http://localhost/phpBB2/admin/ enthält $phpbb_root_path ../
Alle Includes und Links werden z.b. in der common.php auf den Forum Root bezogen, aber vorne dran hängt $phpbb_root_path, z.b. so:
Code: Alles auswählen
include($phpbb_root_path . 'includes/functions.php'); //Eigentlich wird das .php auch noch durch eine Variable ersetzt, das ist aber hier unwichtig
Wird die Datei jetzt vom Adminordner aus eingebunden, dann enthält $phpbb_root_path ../, also bezieht sich die Position - relativ zur aktuellen Position im Adminordner - auf ein übergeordnetes Verzeichnis. Wird die Datei dagegen von der index.php im Forum-Root eingebunden enthält die Variable ./ und der Pfad bezieht sich direkt auf das aktuelle Verzeichnis.
So kannst du das - eine Skriptsprache vorausgesetzt - auch bei deinem Menü machen. Definiere dir einfach in jeder Datei eine Variable die sich auf eine feste Position in deiner Seitenstruktur bezieht (typischerweise das Root Verzeichnis, da sonst alle Pfade unnötig viele ../ enthalten) und frage diese Variable ab. Hierbei musst du allerdings sicherstellen, dass die Variable auch tatsächlich in jeder von außen zugänglichen Datei gesetzt wird, ansonsten könntest du - wenn register globals eingeschaltet ist - deinen Server für Hacker öffnen. Ich persönlich verwende hierfür auch keine Variable sondern eine Konstante (die sich nicht direkt über die URL setzen lässt, selbst wenn register_globals aktiv ist), außerdem gibts eine Fehlermeldung wenn ich die Konstante mal aus Versehen doppelt setzen möchte. In allen nur eingebundenen Dateien landet dann die Abfrage
Code: Alles auswählen
if(!defined('KONSTANTE'))
{
die('Hacking Attempt!');
}
ganz am Anfang, hierdurch lassen sich diese Dateien nur verwenden, wenn die Konstante auch tatsächlich gesetzt ist.