Blog zu www.sandkarte.net

Ich arbeite zur Zeit an der Site www.sandkarte.net, dies ist das zugehörige Entwicklungs-Weblog.

Mittwoch, November 01, 2006

Der kleine Unterschied

Immer wieder mal trat beim Betrachten der Webseiten im eingeloggten Zustand der Effekt auf, dass ich auf die Startseite weitergeleitet wurde und wieder ausgeloggt war. Ich habs am Anfang auf den Zufall geschoben, später auf einen Browser-Bug, der das Session-Cookie nicht richtig speichert, dann auf einen Fehler im Programmcode. Heute habe ich festgestellt: Es ist von allem ein bißchen.
Meine Website ist sowohl mit "www." als auch ohne vor dem "sandkarte.net" erreichbar und das "www." wird auch nicht automatisch ergänzt. So kommt es, dass auch das Session-Cookie nur für die eine Adresse gespeichert wird. An einigen Stellen wird aber absolut weitergeleitet auf "www.sandkarte.net". Wenn ich nun mit "sandkarte.net" auf die Seite komme und irgendwann auf diese Weiterleitung stoße, findet der Browser das Session-Cookie nicht mehr und verabschiedet mich in den Gast-Modus. Die header()-Funktion von PHP erwartet aber absolute URI, so dass ich nicht einfach relativ verlinken kann.
Lösung 1 (oder auch: die zweite Tür zunageln1): Es wird von "sandkarte.de" auf "www.sandkarte.net" verwiesen. Der geneigte Gast kann das Problem dann gar nicht bekommen.
Lösung 2 (oder auch: Wände rausreißen1): Die Seite mit der Weiterleitung liest zur Laufzeit die Werte von $_SERVER['HTTP_HOST'] und $_SERVER['PHP_SELF'] aus und baut sich die Ziel-URI selber zusammen. Egal, wo der Gast ist, er ist immer richtig.

1 Vielleicht fallen mir noch ein paar bessere Metaphern ein...