Shahin: PHP Session Handling (Was ist eigentlich los?)

Hallo Allerseits!

Ich öffne eine PHP-Seite in einem Popup auf, welches aus dem Hauptfenster aktiviert wird. Anscheinend haben die PHP-Scripte in diesem neuen Popup die selbe Session-ID wie das Hauptfenster im Hintergrund.

Wie kann ich den Start einer neuen Session-ID in diesem Popup erzwingen???

Danke für alle Vorschläge!

Gruß

Shahin

  1. Moin!

    Ich öffne eine PHP-Seite in einem Popup auf, welches aus dem Hauptfenster aktiviert wird. Anscheinend haben die PHP-Scripte in diesem neuen Popup die selbe Session-ID wie das Hauptfenster im Hintergrund.

    Wie kann ich den Start einer neuen Session-ID in diesem Popup erzwingen???

    Das dürfte schwierig bis garnicht funktionieren.

    Der Grund dazu liegt in der Art, wie PHP gewöhnlich Sessions realisiert.

    Normalerweise versucht PHP, ein Cookie zu setzen. Dieses Cookie gilt browserweit, d.h. alle künftigen Requests sende es mit. Folglich wird auch immer dieselbe Session-ID mitgesendet. Es ist unmöglich, das zu trennen.

    Du hast nur zwei Chancen:
    1. Du benutzt keine Cookies. Das kann man in der PHP.INI abstellen, und vielleicht auch während des PHP-Scriptes. Allerdings mußt du dann dafür sorgen, daß du bei _allen_ Links, die die begonnene Session fortführen sollen, manuell die Session-ID anhängst, und auch den Automatismus, den PHP ansonsten benutzt, abschaltest. Alternativ kann es reichen, wenn du als URL zum Popup einfach die volle HTTP-URL angibst - PHP hängt an solche URLs keine Parameter an.
    2. Du benutzt unterschiedliche SessionID-Namen. Dann könnte es auch mit Cookies funktionieren, du mußt eröffnest dann allerdings wirklich _zwei_ Session-Stränge, die nichts miteinander zu tun haben. Das ist möglicherweise nicht, was du willst.

    Angesichts dieser Probleme muß ich die Frage stellen: Was willst du überhaupt machen. Sicherlich ist dein Lösungsansatz, _zwei_ Sessions zu verwenden, nicht optimal.

    - Sven Rautenberg

    1. Angesichts dieser Probleme muß ich die Frage stellen: Was willst du überhaupt machen. Sicherlich ist dein Lösungsansatz, _zwei_ Sessions zu verwenden, nicht optimal.

      Ich habe ein Online-Shop zusammengebasstelt. Im Hauptfenster kann der Besucher innerhalb des Shops navigieren. Zum Lesen der Daten aus den Datenbank verwende ich ein selbsgeschriebene Funktion, die das Ergebnis in ein Array reinschreibt. Anschließend registriere ich dieses Array als Session. So bin ich in der Lage, vor- und zurückzublättern und mir die Infos einzelner Artikel anzuzeigen, ohne mit der Datenbank zu kommunizieren. Im erwähnten Popup geht das Backoffice für den Shop auf, welches für die Bearbeitung der Daten wiederrum auf die selbe Funktion zugreift. Das Ergebnis der einen Seite wird also durch das andere überschrieben.

      Ich muß leider dieses Backoffice in einem Popup aufmachen, da ich keine Scrollbalken usw. haben möchte, und mich auf eine bestimme Höhe und Breite festlegen muß.

      1. Yo!

        Ich muß leider dieses Backoffice in einem Popup aufmachen, da ich keine Scrollbalken usw. haben möchte, und mich auf eine bestimme Höhe und Breite festlegen muß.

        Das Backoffice hat doch aber mit dem Shop absolut nichts zu tun. Man arbeitet entweder im Backoffice, weil man die Zugangsdaten dazu hat und Admin ist, oder man ist Kunde und surft im Shop.

        Ich empfehle, den Sessionnamen zu ändern, damit auf garkeinen Fall irgendwelche Datenkreuzungen vorkommen. Könnte ja sonst aus Versehen sein, daß ein Kunde irgendwie ins Backoffice gelangt, weil er die gleiche Session-ID hat wie der Admin.

        session_name() ist dein Freund. http://www.php.net/manual/de/function.session-name.php

        - Sven Rautenberg

        1. session_name() ist dein Freund. http://www.php.net/manual/de/function.session-name.php

          Danke, ich versuchs mal so!

          Gruß

          Shahin