Thomas Schmieder: SessionID wird bei jedem Seitenaufruf neu erzeugt

Beitrag lesen

Hallo,

nachdem ich mich nun eine Woche ziemlich intensiv mit den Sessions und einer Doku dazu beschäftigt habe, möchte ich auch ein wenig Senf ablassen:

session_start() muss nur einmal am Anfang ausgeführt werden

session_start() muss auf _jeder_ Seite erneut im (HTTP-)Header-Bereich des Skriptes (nicht im <head>-Bereich!) noch vor jeder Ausgabe (alles das, was später im Browser-Quelltext landet) aufgerufen werden. Man sollte vorher $oldname=session_name("neuername"); aufrufen, wenn man den Standardnamen (PHPSESSID) nicht wünscht. Wenn eine _neue_ Session gestartet wurde, ist SID (Konstante) gesetzt und gefüllt.

if (defined("SID") and strlen(SID) > 32)
{
  echo "Session ".SID." wurde neu gestartet";
}

if (!defined("SID")
{
  echo "Für dieses Skript gibt es (noch) keine Session-Verbindung";
}

Und wenn SID definiert ist und trotzdem leer (SID==""), dann bestand schon eine Session-Verbindung, die durch session_start() wieder aufgenommen wurde.

Ich hoffe, nun kommst Du einen Schritt weiter.

um zu verhindern dass eine neue gestartet wird obwohl sie schon gestartet wurde
musst du prüfen ob eine session_id() schon vorhanden ist

Die Funktion session_id() liefert erst _nach_ Aufruf von session_start() ein gültiges Ergebnis.

Liebe Grüße aus <http//www.braunschweig.de>

Tom