phpbar.de logo

Mailinglisten-Archive

[php] Session nur bei Bedarf starten

[php] Session nur bei Bedarf starten

Ringo Großer swek at gmx.net
Die Dez 5 02:09:37 CET 2006


Hallo Liste,

im Anschluss an die bisherige Diskussion zu den Sessions
möchte ich nun das empfohlene Vorgehen ausprobieren und
eine Session wirklich erst dann erstellen, wenn ich sie benötige,
also wenn damit begonnen wird, Daten über mehrere Seiten
hinweg zu transportieren.

Dazu wurde empfohlen, die Session nur dann zu starten, wenn
eine Session-ID von einer vorherigen Seite übertragen wurde, also
per GET, POST oder COOKIE.
Möglicherweise hab ich das falsch verstanden, aber ich habe
herausgelesen, dass ich session_start() nur in zwei Situationen
ausführen muss:
1. Ich möchte eine neue Session initiieren.
2. Ich möchte eine bestehende Session übernehmen.

Im 3. Fall würde ich keine session_start() verwenden, weil da scheinbar
nicht die Notwendigkeit besteht:
3. Es soll keine Session neu gestartet werden und es ist auch noch
keine vorhanden. Von den technischen Ursachen für den Verlust der
Session-ID mal abgesehen.

Ich befinde mich nun also an diesem Punkt der Entscheidung, ob
ich session_start() ausführe oder nicht.
Nennt mich bescheuert, aber bei mir liefert session_id() erst nach dem
Ausführen von session_start() einen Wert und erscheint mir daher als
Test für die Ausführung von session_start() ungeeignet.

Das Manual sagt zur session_id():
"Wenn ID angegeben wird, wird die die aktuelle Session-ID ersetzt.
session_id() muss zu diesem Zweck vor session_start() aufgerufen werden."

Also nur wenn ich die ID vorgeben möchte, dann führe ich session_id()
vor dem session_start() aus.

Bin ich jetzt völlig auf dem Holzweg? Der Lutz hatte doch in einer
seiner Emails das Thema "session.auto_start" angesprochen. Ich habe
das auf den wiederholten pauschalen Aufruf von session_start() auf jeder
meiner Seiten (es läuft ja alles gegen $_SERVER['PHP_SELF']) bezogen.
Also bisher rufe ich von Anfang an und auf allen folgenden Seiten immer
session_start() auf.
Ich sehe ein, dass die Session eigentlich erst ab dem Zeitpunkt des Login
notwendig wird. Also hatte ich nach einem Entscheidungskriterium gefragt,
um in meiner zentralen framework.php zu prüfen, ob ich session_start()
schon ausführen muss oder noch keine Session benötigt wird.

Folgender Hinweis kam von Yannik:
> if (session_id() ==='') //session existiert nicht...

Diese Bedingung dürfte nach meinen bisherigen Tests aber vor einen
session_start() immer positiv ausfallen. Also würde ich damit niemals
eine bestehende Session erkennen und könnte sie mit einem nur an
diese Bedingung geknüpften session_start() auch nicht wieder aufnehmen.

Was wäre also ein brauchbarer Test, um auf die Existenz einer Session
zu prüfen? Sieht PHP dafür eine Funktion vor oder muss ich selbst nach
einen entsprechenden Cookie oder Parameter prüfen?

regards, Ringo 


php::bar PHP Wiki   -   Listenarchive