Mailinglisten-Archive |
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