SESSION - Kurzzeit-Gedächtnis für PHP

Über die Sessions haben wir eine einfache Möglichkeit, uns Informationen, Daten und Zustände während einer kompletten Nutzungsdauer eines Besuchers zu merken. Diese werden in sogenannten Sessions gespeichert, auf die von PHP unabhängig, auf welchem Programmteil diese „gemerkt“ wurde, wieder darauf zugegriffen werden kann (und auch geändert).

Anhand von einem einfachen Beispiel sehen wir die Arbeitsweise. Wir vermerken, wie oft derselbe Besucher eine bestimmte Seite besucht hat, und lassen diese Zahl auf einer anderen Seite ausgeben.

PHP-Quellcode: Beispiel Anwendung von SESSION
<?php
// Beginn der Session, bereits vorhandene werden aktiviert
session_start();
 
// Abfrage, ob die Variable anzahlbesuche existiert
if ( ! isset ( $_SESSION['anzahlbesuche'] ) )
{
    $_SESSION['anzahlbesuche'] = 1;
}
else
{
    $_SESSION['anzahlbesuche'] ++;
}
?>
<a href="ausgabe_seitenanzeigen.php">Ausgabe Seitenbesuche</a>

Durch session_start(); wird die Sitzung (session) gestartet und eventuell vorhandene Session-Variablen werden verfügbar gemacht.

Die Zeile mit isset überprüft, ob die Session-Variable anzahlbesuche einen Inhalt enthält.

Wenn bisher kein Inhalt vorhanden ist, wird der Session-Variable anzahlbesuche die Zahl 1 zugewiesen.

Ist die Variable bereits vorhanden, wird der Inhalt um 1 erhöht.

Es wird aus didaktischen Gründen noch ein Link ausgegeben, um eine weitere Seite aufzurufen, um dort den Inhalt der Variable auszugeben. Der Inhalt der weiteren Seite ist:

PHP-Quellcode: Inhalt ausgabe_seitenanzeigen.php
<?php
// Beginn der Session, bereits vorhandene werden aktiviert
session_start(); 
 
echo $_SESSION['anzahlbesuche'];
?>

Sie sehen, wie einfach es ist, auf weiteren Seiten auf die Inhalte der Session-Variablen zuzugreifen, diese auszugebene und auch Berechnungen etc. durchzuführen.

Lebenslauf einer Session-Variablen

Die Session-Variable wird automatisch zerstört, wenn der Browser geschlossen wird oder eine gewisse Zeit vergangen ist (meistens 180 Minuten). Es gibt auch die Möglichkeit, dass Sessions in Cookies gespeichert werden und dadurch über Tage vorgehalten werden können (mit Sicherheitsproblemen – ein anderer nutzt die Webanwendung nur, weil sich der eigentliche Nutzer nicht ausgeloggt hat).

Sie können sich ausgeben lassen, wie lange eine Session-Zeit eingestellt ist: echo session_cache_limiter() bzw. eine eigene Zeit setzen, nach dem die Session aus Mangel an Bewegung verfällt (ohne Aktivität war). Über den Befehl session_cache_limiter(20) wird die Lebensdauer der Session auf 20 Minuten gesetzt.

Session-Variablen zerstören

Es kann gezielt die Session-Variable gelöscht werden. Dies geschieht für einzelne Variablen über unset ($_SESSION['variablenname']); oder für eine komplette Session über unset ($_SESSION);

Übung: wir erstellen einen geschlossenen Zugangsbereich

Für den geschlossenen Zugangsbereich benötigen wir folgende Bestandteile:

Eine Session-Variable, in der gespeichert ist, ob der Nutzer berechtig ist – diese ist bei Berechtigung dann gesetzt mit: $_SESSION['eingeloggt'] == True

Ist diese gesetzt, wird der Inhalt für den berechtigten Besucher angezeigt (im Beispiel die Uhrzeit).

Ist diese $_SESSION['eingeloggt'] nicht gesetzt, soll ein Formular angezeigt werden, indem der Besucher seinen Benutzernamen und sein Kennwort eingeben kann.

Und diese Eingaben werden überprüft (hier hart codiert im Quellcode (benutzername="php-kurs.com" und kennwort="geheim") und wenn korrekt, dann entsprechend die $_SESSION['eingeloggt'] auf Wahr gesetzt.

Zeichnen Sie als erstes ein Ablaufdiagramm

Im Ablaufdiagramm haben Sie folgende Programmteile:

  • Formular zum Erfassen der Benutzerdaten
  • Kontrolle, ob erfasste Benutzerdaten korrekt sind mit hinterlegten Vorgaben
  • Wenn SESSION-Variable eingeloggt gesetzt ist, Anzeige von Inhalten für berechtigen Nutzer

Wenn Sie bei der Umsetzung hängen bleiben, können Sie sich einen Lösungsweg für Einlogg-Script ansehen.