Hallo Jörg,
Nimm bevorzugt relative Adressen.
Amen.
Wo ist eigentlich REQUEST_SCHEME dokumentiert? Auf php.net nicht, aber jemand verwendet es da in einem Beispiel. Mein IIS gehostetes PHP hier zeigt mir diesen Eintrag nicht. Ist das eine Apache-spezifische SERVER-Variable?
Wenn man die URL zusammenbaut - muss man dann zwingend Schema, Host und Port davor setzen? Wenn http://example.org:4711/foo/bar/test.php
die Datei http://example.org:4711/foo/baz/guggi.html
referenzieren will, und vorhat, das mit Hilfe von SCRIPT_NAME
zu tun, dann würde ich davon ausgehen, dass Schema, Host und Port definitiv gleich sind. Du tust es ja letztlich auch, weil Du die Informationen aus den $_SERVER
Variablen ausliest.
Es gibt einen Anwendungsfall, wo man diese drei Informationen der URL hinzufügen muss, nämlich dann, wenn man jemand anderem diese URL als Link zum Kopieren geben will. Z.B. in einer Mail.
Das ist aber schon beim Generieren eines <a>
Elements nicht mehr nötig. Wenn eine HTML Seite auf http://example.org:4711
einen Link mit href="/foo/baz/guggi.html"
enthält, und der User dem Browser sagt: Copy link address, dann macht der Browser automatisch eine absolute URL draus (ok, Chrome tut es).
Wenn also http://example.org:4711/foo/bar/test.php
einen Link auf http://example.org:4711/foo/baz/guggi.html
setzen will, dann sollte es eins von diesen beiden sein:
<a href="../baz/guggi.html">Guckst Du relativ zu mir</a>
<a href="/foo/baz/guggi.html">Guckst Du absolut auf dem Server</a>
Das hier zu generieren, ist meiner Auffassung nach verschwendete Arbeitszeit:
<a href="http://example.org:4711/foo/baz/guggi.html">Guckst Du weltweit absolut</a>
Rolf
sumpsi - posui - obstruxi