hawkmaster1: Eigene Session für neues Firefox Fenster

Hallo zusammen,

Eine PHP Webseite arbeitet mit Sessions. Am Anfang der Seite steht:

session_start();

wenn man nun z.b. über JS window.open() beim Firefox eine andere URL aufruft die wiederum auch mit Sessions arbeitet, wird die gleiche Session ID genommen, bzw. alles in eine Datei reingeschrieben.

Ich habe nun vor dem Session Start noch einen individuellen Session Namen angegeben.

session_name("Anwendung-1-SessionID");
session_start();

und in der anderen Anwendung dann auch:

session_name("Anwendung-2-SessionID");
session_start();

Jetzt sieht man im Apache tmp Ordner (bzw. da wo die Session ID abgelegt werden) wirklich zwei getrennte Session Dateien (IDs). Ist das der "richtige" Weg bzw. kann man das so lösen?

Danke für jeden Tipp.

viele Grüße hawk

  1. Tach!

    wenn man nun z.b. über JS window.open() beim Firefox eine andere URL aufruft die wiederum auch mit Sessions arbeitet, wird die gleiche Session ID genommen, bzw. alles in eine Datei reingeschrieben.

    Die Sessions werden in deinem Fall (höchstwahrscheinlich) über einen Cookie identifiziert. Der wird aber nicht Fenstern sondern Domains zugeordnet. Damit ergeben sich zwei Lösungswege: Kein Cookie verwenden oder eine andere Domain verwenden.

    Bei zweitens reicht schon, mit www. und ohne, um eine Unterscheidung zu haben (falls da nicht eine generelle Umleitung auf eine von beiden Formen im Server konfiguriert ist).

    Kein Cookie bedeutet eine Übergabe der Session-ID auf anderem Wege. Das bringt aber auch Nachteile mit sich, wie dass die Session-ID über die Weitergabe des Links Unberechtigten zur Verfügung gestellt wird.

    dedlfix.

  2. Hi,

    wenn man nun z.b. über JS window.open() beim Firefox eine andere URL aufruft die wiederum auch mit Sessions arbeitet, wird die gleiche Session ID genommen, bzw. alles in eine Datei reingeschrieben.

    ja, wenn einmal eine Session erstellt ist, sendet der Client bei Folge-Requests auch immer dasselbe Session-Cookie wieder mit, der Server nimmt folglich die existierende Session wieder auf - unter der Voraussetzung, dass alles unter derselben Domain läuft.
    Ob ein neues Fenster mit Javascript geöffnet wird oder von Hand, ist dabei belanglos.

    Ich habe nun vor dem Session Start noch einen individuellen Session Namen angegeben.

    session_name("Anwendung-1-SessionID");
    session_start();
    

    und in der anderen Anwendung dann auch:

    session_name("Anwendung-2-SessionID");
    session_start();
    

    Jetzt sieht man im Apache tmp Ordner (bzw. da wo die Session ID abgelegt werden) wirklich zwei getrennte Session Dateien (IDs).
    Ist das der "richtige" Weg bzw. kann man das so lösen?

    Es spricht IMO nichts dagegen. Aber es spricht auch nichts dagegen, nur eine Session zu benutzen und die Session.Parameter durch eindeutige Namen (Präfixe) der jeweiligen Anwendung zuzuordnen.

    Wenn die Entscheidung, ob eine neue Session gestartet werden soll, vom Client ausgeht, könnte auch der Private Mode des Browsers eine Lösung sein. Ein Private Tab hat nämlich seine eigenen Cookies.

    So long,
     Martin