phpbar.de logo

Mailinglisten-Archive

[php] Session

[php] Session

Lutz Zetzsche Lutz.Zetzsche at sea-rescue.de
Mon Sep 6 17:12:16 CEST 2004


Hi Christoph,

Christoph Rust schrieb:
> Lutz Zetzsche schrieb:

[...]

>>1. Warum setzt Du die Session-ID eingangs explizit mit session_id()? Da
>>dadurch der Cookie bei jedem Seitenaufruf neu gesetzt wird und ein Cookie
>>nicht in der Seite, die ihn setzt, sondern erst beim naechsten
>>Seitenaufruf ausgelesen werden kann, koennte das schon Dein Problem
>>verursachen. PHP findet keinen Session-Cookie und damit keine Session-ID
>>und generiert eine neue Session-ID. Nur eine Ueberlegung, aber guck mal,
>>ob es nicht daran liegt. Verzichte doch mal auf das session_id() am
>>Anfang.

[...]

> Du hast Recht :)
> Beim ausprobieren bin ich darauf gestoßen, dass er beim Aufruf von
> session_id() jedesmal ein neues Cookie setzt.
> Aber ich brauch die Funktion session_id() ja, um PHP mitzuteilen, welche
> ID er für die Session verwenden soll und somit auch an die URL anhängt,
> würde ich das nicht machen, erzeugt er mir ja eine richtige Random
> ZufallsID, die ich aber nicht benutzen kann.
>
> Lösungsversuch:
>
> Wenn ich erst immer prüf, ob sessid im $_COOKIE-Array nicht vorhanden
> ist und dann die Funktion session_id($id) aufrufen müsst es gehen...
> Aber wie bekomm ich das Prefix für die Session, denn wenn es auf dem
> Server geändert wird, heißt die Variable im Cookie ja nicht mehr sessid
> sondern z.B. PHPSESSID (Grundeinstellung)...
> session_name() müsste eigentlich gehen....
> Ich werds mal prüfen...
> Aber danke für deine Hilfe...

Das waere insgesamt ein Loesungsweg.

Du musst allerdings aufpassen: Wenn PHP so konfiguriert ist, dass es die
Session-ID entweder im Cookie haelt oder alternativ ueber die URL
transportiert, dann musst Du beachten, dass die Session-ID ausschliesslich
im Cookie gehalten wird, wenn der Anwender Cookies im Browser aktiviert
hat, und PHP nur auf den Transport ueber die URL ausweicht, wenn der
Anwender Cookies im Browser eben deaktiviert hat.

Wenn beide Wege - Cookie und URL - moeglich sind, muss Deine Loesung auch
beide Wege abdecken. Die Session-ID kannst Du aber transportwegunabhaengig
mit derselben Funktion abpruefen, mit der Du sie setzt:

     session_id -- Get and/or set the current session id

Den Session-Namen kriegst Du, wie Du schon sagtest, mit session_name()
heraus.

Guck Dir auch noch einmal in der PHP-Doku die gesamten
Session-Konfigurationsparameter zu den Cookies an. Vielleicht ist etwas
dabei, was Dir ebenfalls weiterhilft. :-) Sebastian hat ja auch schon zwei
davon angesprochen.


Viele Gruesse

Lutz


php::bar PHP Wiki   -   Listenarchive