Der Martin: Session Problem php

Beitrag lesen

Hallo Hank,

warum erhalte ich als Ausgabe bei folgendem php-code in der letzten zeile eine 1, obwohl die Session ja gestartet sein sollte?

echo "Session-Status_vor_start = ".session_status();
// Prüfen, ob eine Sitzung bereits gestartet wurde
if(session_status() != 2) {
    // Sitzung starten
    session_start();
}
echo "Session-Status_nach_start = ".session_status();

weil du mit dem echo in der ersten Zeile die erste Ausgabe machst. Damit werden die HTTP-Header für die Seite gesendet und können danach nicht mehr geändert oder ergänzt werden. Das session_start() möchte eigentlich ein Cookie setzen, kann das aber nicht mehr und bleibt deshalb wirkungslos.

Saubere Lösung: Gib den Wert in der ersten Zeile nicht direkt aus, sondern speichere ihn nur und mach alle Ausgaben später im Script en bloc.

The dirty way: Nutze Output Buffering.

Einen schönen Tag noch
 Martin

--
Kaffee ist nur schädlich, wenn Ihnen ein ganzer Sack aus dem 5. Stock auf den Kopf fällt.