Geistiger Hohlraum: Konzept einer Session

Beitrag lesen

setze erstmalig ein Session ein (THE = DAS Session?), klappt auch soweit ...

Im Englischen gibt es kein der-die-das, der Rückschluss the = das ist von daher unpassend. Aus der deutschen Sprachmelodie heraus ergibt sich recht eindeutig für Session "die Session", ähnlich "die Sezession", "die Prozession", "die Absolution", etc. Man könnte natürlich auch einfach von einer Sitzung sprechen.

session_start() fragt ein Cookie (DAS Cookie?) ab.

Eher der Cookie.

Wenn das fehlt, wird es angelegt. Inhalt unklar. Bei Ende des PHP- Scripts wird das Cookie nochmals geschrieben.

Nein, Cookies können nur einmal pro Skriptdurchlauf, also pro Seitenabruf geschrieben werden, und genau genommen auch nur sehr weit vorne im Skript, weil diese Parameter im HTTP-Protokoll vor den eigentlichen Nutzdaten (sprich: Seiteninhalt) gesendet werden müssen.

Wenn ein Cookie vom letzten Zugriff auf die Seite vorhanden, könnte das uralt sein (falls der Browser ständig geladen war)

Falls der Browser ständig geladen war und der Cookie kein Ablaufdatum hatte. Es gibt Cookies mit Ablaufdatum und solche ohne, die stattdessen mit dem Schließen des Browsers gelöscht werden.

und irgendwoher werden die alten Session- Variablen hergezaubert. Sind die im Cookie enthalten? Oder jahrelang auf dem Server?

Sessions bestehen aus zwei Teilen, den Daten und einer Kennung für die Session, der Session-ID. Die Daten werden auf dem Server zusammen mit einer eindeutigen Kennung gespeichert. Die Kennung wird im Browser per Cookie gespeichert und dient dem Server dazu, beim nächsten Aufruf wieder den richtigen Datensatz rauszusuchen.

Das hat die Vorteile, dass a) nicht bei jeder Anfrage an den Server (bei jeder, auch für Bilder und anderes, Cookies kennen keinen Unterschied zwischen Skripten, Bildern, usw) die gesamten Daten vom Browser an den Server geschickt werden müssen und b) die Daten vor Einsicht und Manipulation durch den Browserbenutzer geschützt sind.

Ich hinterlege als Session- Variable vorsichtshalber mal die Startzeit. Irgendwo nach 1, 2 Stunden sollte die Zugriffsberechtigung enden.

Das ist eine gute Idee.

Andererseits sollte sich der Benutzer auch bewußt abmelden können. Wie geht das? Mit session_unset() ?

Nein, einer Kombination von session_unset() und anschließendem session_destroy().