Sven Rautenberg: session_start (); ??

Beitrag lesen

Moin!

Ich stehe leider vor meinem nächsten PROBLEM. Ich bekomme die VARIABLE

$_SESSION['ONLINE']

leider beim vermeintlichen LOGOUT nicht gelöscht. Wer ist jetzt verantwortlich wofür?

Warum löschen?

Die Variable ist true, wenn die Session "online" ist. Und sie ist false, wenn man offline ist. Als dritte Möglichkeit existiert die Variable noch nicht, wenn die Session gerade erst begonnen hat.

Setze also die Variable auf den gewünschten Wert.

Ich würde jedenfalls eine Session-Variable nicht löschen, wenn es dafür nicht zwingende Gründe gibt.

session_destroy () für das löschen aller registrierter Daten, d.h diese Funktion löscht nicht die VARIABLE $_SESSION['ONLINE'], oder

session_destroy() ist nach meiner Erfahrung ziemlich überflüssig.

session_unset () löscht alle SESSION-VARIABLEN. Ich versteh im Moment nur noch Bahnhof.

session_unset() ebenso. Es gehört überdies zu der Gruppe der "verbotenen" Session-Funktionen, ebenso wie session_register() und session_is_registered().

Eine SESSION VARIABLE ist doch im Normalfall diese:

$_SESSION['ONLINE']

belegt mit einem Wert

Korrekt. Und du tust dir einen Gefallen, wenn du den Wert dieser Variablen nicht zwischendurch in andere Variablen kopierst, nur weil du Schreibarbeit sparen willst.

$_SESSION['ONLINE'] = TRUE;

Wer löscht bei einem LOGOUT was?

Du mußt es löschen, wenn du willst.

$_SESSION['ONLINE'] = false;
dürfte es aber doch auch tun. Muß es sogar, alles andere wäre programmtechnisch unlogisch, denn du prüfst ja doch immer
if ($_SESSION['ONLINE']) {
  //code wenn eingeloggt
}

Der Block wird nur ausgeführt, wenn der Wert von $_SESSION['ONLINE'] zu true evaluiert wird. Wird er zu false evaluiert, dann eben nicht. Nichtexistente Variablen, leere Variablen (String ""), Strings mit "0" oder dem Zahlwert Null gelten als "false".

Alternativ: unset() löscht selektiv die angegebene Variable.

- Sven Rautenberg

--
My sssignature, my preciousssss!