Die eigentliche Antwort lautet, man verwendet überall den gleichen Namen der Session der über PHP session_name einstellbar ist.
Das hört sich einfach an, ist es aber in der Praxis nicht ganz so.
Fremdscripte rufen ihrerseits irgendwo session_start auf und das könnte sogar mehrfach passieren.
Session_name ist jedoch vorher aufzurufen.
Es sind also alle Stellen zu finden wo session_start aufgerufen wird um vorher den definierten Namen vom Stapel zu lassen.
Aber woher bekommt den Namen der Session ?
Eine Übergabe mit einer Url wäre unpraktisch, denn dann müsste man stets dafür sorgen, das der Name übergeben würde - ein gewaltiger Aufwand.
Ein weiteres Problem kann sich stellen, wenn ein Script vor dem eigentlichen Hauptscript aufgerufen - dann würde man in die Situation kommen, das kein Name vorhanden ist und beim Aufruf von session_start eine völlig eigenständige Namensbildung erfolgt.
Das aber würde bedeuten - es funktioniert nicht.
Besser ist es einen eindeutigen Namen zentral zu bilden, z.B. über ein externes Script, das man nun überall vor session_name einbindet oder den kleinen Codeteil überall dort zu setzen wo der Name bekannt sein muss.
Wo aber bekommt man einen eindeutigen Namen her ?
Das wäre eine Möglichkeit:
$myid = md5($_SERVER['HTTP_USER_AGENT'] . $_SERVER['SERVER_ADDR'] . $_SERVER['REMOTE_ADDR']);
Die Gesamtaufgaben bestehen also in der Erledigung folgender Schritte:
- Ermittlung aller Stellen wo session_start aufgerufen wird.
- Davor den o.a. Code oder anderen ebenfalls nutzbaren setzen.
- Nach 2. session_name($myid); aufrufen
und das war's.
Alle Scripte verwenden nun die gleiche Session.
Es kann durchaus sein, das einzelne in $_SESSION gehaltene Informationen einen anderen Namen haben als in einem weiteren Script erwartet wird.
Dann muss man sicherstellen, das die Information entweder durch den zutreffenden Namen abgefragt wird oder man stellt sicher, das die gleiche Information auch unter einem weiteren Namen verfügbar ist .
Keine Kommentare:
Kommentar veröffentlichen