Pfadkonfiguration

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
sommer
Mitglied
Beiträge: 344
Registriert: 05.01.2004 12:05

Pfadkonfiguration

Beitrag von sommer »

Hallo,
ich suche eine Möglichkeit bei der Erstellung einer Internetseite die http Adresse im Quellcode wegzulassen, die Seite soll Lokal, wie im Netz problemlos laufen.
Was gibt es da für Möglichkeiten? Wie wurde das z.B. hier im Forum gelöst?
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Das ist eigentlich recht einfach: Du musst auf jeder Seite den Pfad zu den anderen Seiten relativ zur aktuellen Position angeben. Hierbei kannst du dich mit einem . (Punkt) als Platzhalter auf das aktuelle Verzeichnis beziehen, zwei Punkte (..) bezieht sich auf den Übergeordneten Ordner.

Beispiel:

Sagen wir, du befindest dich gerade im Pfad http://localhost/phpBB2/admin/
Möchtest du jetzt auf eine Datei, die sich im Ordner http://localhost/phpBB2/admin/ befindet (also im gleichen Ordner) dann kannst du die Pfadangabe ./datei.html verwenden. Möchtest du dagegen auf eine Datei im Verzeichnis http://localhost/phpBB2/ verlinken musst du als Pfadangabe ../datei.html wählen. Das geht natürlich auch noch weiter, wenn du dich auf http://localhost/ beziehen willst, dann geht das mit ../../datei.html wenn du in den Ordner http://localhost/karl_heinz/ willst, dann geht das mit ../../karl_heinz/datei.html usw.

Eine andere Alternative wäre die zentrale Speicherung der Information wie die Pfade zu wählen sind. Das geht aber nur mit einer Skriptsprache (wie z.b. PHP) und muss dann bei jedem Verschieben der Dateien auf den aktuellen Stand gebracht werden, hat also eigentlich nur Nachteile. Eigentlich verwendet man inzwischen so ziemlich überall relative Pfade innerhalb einer Seite.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Benutzeravatar
sommer
Mitglied
Beiträge: 344
Registriert: 05.01.2004 12:05

Beitrag von sommer »

Das ist mir soweit bekannt, aber trotzdem danke für die genaue Erklärung.

Mit der Lösung habe ich das Problem, wenn z.B. eine Navigation auf allen Seiten eingebunden wird und man sich in einem Verzeichnis befindet.
Auf der index Seite stimmen die Links noch index.php blabla.php usw.
Wenn man sich dann aber in einem Verzeichnis befindet http://www.domain.com/verzeichnis/ und da dann auf die Navi klickt, kommt man nicht mehr aus dem Verzeichnis raus.

Wie könnte man das denn mit den Pfaden lösen?

Ist ein wenig verzwickt, da ich bei der Erstellung eigentlich gleich die Links setzen will um nicht erst am Ende alles durchzugehen, da vergisst man leicht etwas. Es ist auch noch nicht alles klar, was da noch kommen wird.
Bei einer Erweiterung mit zusätzlichen Verzeichnissen wäre wieder eine Änderung fällig.
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

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.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Benutzeravatar
sommer
Mitglied
Beiträge: 344
Registriert: 05.01.2004 12:05

Beitrag von sommer »

Super Lösung! Vielen Dank!!
Lässt sich wirklich leicht umsetzten und funktioniert! 8)
Antworten

Zurück zu „Coding & Technik“