dedlfix: Sessions personalisieren

Beitrag lesen

Tach!

Das Problem ist, das wenn ich mich bei einer Webseite einlogge und dort die Session-Variable login = true gespeichert wird, das ich dann bei allen anderen Seite auch eingeloggt bin.
Eine Abfrage 'login == true' ist in diesem Fall nicht hinreichend.

Ein (nicht typsicherer) Vergleich eines booleschen Wertes auf wahr dürfte auch in Perl sinnlos sein. Man kann den Wert direkt in der Bedingung verwenden.

Ich könnte nun natürlich immer den Domainnamen mit speichern und abfragen, dann würde es aber Probleme geben, wenn ich bei zwei Seiten gleichzeitig angemeldet sein möchte.
Die Trennung muss an einer anderen Stelle erfolgen. Du hast _eine_ SW für mehrere Domains. In dieser SW kannst Du den Domain-Namen aus einer Umgebungs-Variablen lesen und anhand des Domain-Namen den Speicherort für die Session bestimmen (Domänen abhängige Konfiguration).

Das Problem des OP bezieht sich auf PHP und nicht Perl. Manche Sachen sind zwar übergreifend lösbar, aber deine unzureichenden PHP-Kenntnisse stiften mal wieder mehr Verwirrung als Nutzen.

Der Speicherort der Session ist nebensächlich. Man kann durchaus den Default-Mechanismus von PHP verwenden. Bei ausschließlicher Verwendung von Cookies für die Session-ID sind diese bereits ausreichend, um eine Trennung der Sessions nach Hostnamen zu gewährleisten. Ohne Rückmeldung seitens des OP wird sich nicht klären lassen, wie seine derzeitige Konstellation aussieht und wie er sich dadurch die bereits vorhandene Trennung ausgehebelt hat.

Wenn er die Session-ID selbst auf anderem Wege mitführt, dann kann er im Prinzip gleich im Code dafür sorgen, dass bei einem Wechsel zu einer anderen Domain die Übergabe unterbleibt. Andererseits kann man die Werte im Session-Array auch gleich nach Domains trennen.

$_SESSION['domain1'] = array();
$_SESSION['domain2'] = array();

$_SESSION['domain1']['login'] = true;
$_SESSION['domain1']['wert1'] = foo;
$_SESSION['domain1']['wert2'] = bar;

$_SESSION['domain2']['wert1'] = qux;
$_SESSION['domain2']['wert2'] = baz;

dedlfix.