phpbar.de logo

Mailinglisten-Archive

[php] Session nur bei Bedarf starten

[php] Session nur bei Bedarf starten

Christopher Gerharz lists at cgerharz.de
Die Dez 5 03:52:24 CET 2006


Ringo Großer wrote:
> Hallo Liste,

Hallo Ringo,

> [...]
> 
> 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."

Und weiter unten:

"session_id() gibt die Session-ID der aktuellen Session zurück oder die
leere Zeichenkette (""), falls es keine aktuelle Session gibt (es
existiert keine aktuelle Session-ID)."
(http://php.cgerharz.de/session_id)

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

Richtig.

> [...]
> 
> 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.

Auch richtig, soweit ich weiss.

Wie waer's mit Folgendem:

Im globalen Framework:
if (isset($_GET[session_name()]) || isset($_POST[session_name()] ||
isset($_COOKIE[session_name()])
{
 	session_start();
}

Und sobald die Session benoetigt wird (sofern noch keine existiert),
also meinetwegen nach einem Login einfach:
session_start()

(ungetestet!)

> 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?

Mir ist keine Funktion bekannt, ergo obiger Code. Lasse mich allerdings
gerne belehren, falls es da etwas eleganteres gibt. :)

> regards, Ringo 

Christopher

php::bar PHP Wiki   -   Listenarchive