PHP Manual
/
HTTP

Sessions - Server-Cookies in PHP

06. 11. 2019

Obsah článku

Oft müssen wir mehr Informationen in Cookies speichern, aber die Höchstgrenze für Cookies liegt bei 4 kB, was nicht viel ist. Sessions löst dieses Problem, indem es die Daten auf dem Webserver speichert und nur eine kurze Kennung im Browser des Kunden hinterlegt, um festzustellen, welche Daten zu welchem Kunden gehören.

Starten einer Sitzung

Bevor wir mit den Sitzungen arbeiten können, müssen wir sie erst einmal starten. Dies geschieht durch den Aufruf der Funktion session_start() gleich zu Beginn des Skripts:

session_start();

Starke Warnung: Vor dem Aufruf der Funktion session_start() darf keine Ausgabe in HTML-Code ausgeführt werden!

Sicherheit der Sitzung

Der Inhalt der Sitzung wird auf dem Server gespeichert und nur die Kennung wird an den Client-Browser gesendet, so dass der Benutzer keine Möglichkeit hat, zu erfahren, was in der Sitzung gespeichert ist. Die einzige Möglichkeit, wie das Skript den Benutzer beeinflussen kann, ist das Löschen der Kennung (woraufhin das Skript eine neue Kennung erzeugt).

Abrufen von Daten aus einer Sitzung

Alle Sitzungen werden in der superglobalen Variable $_SESSION gespeichert und können als Array durchlaufen werden.

Zum Beispiel kann der Name des aktuell angemeldeten Benutzers durch Schreiben abgefragt werden:

echo $_SESSION['Benutzer'];

Hinweis: Es kann sein, dass die Sitzung nicht immer existiert (zum Beispiel, wenn Sie ein neuer Benutzer sind). Daher sollten wir vor jeder Auflistung immer prüfen, ob sie existiert und gegebenenfalls eine alternative Fehlermeldung anbieten.

if (isset($_SESSION['Benutzer']) && $_SESSION['Benutzer']) {
echo 'Angemeldeter Benutzer:' . $_SESSION['Benutzer'];
} else {
echo 'Niemand hat sich angemeldet.';
}

Speichern von Daten in der Sitzung

Das Speichern erfolgt als einfaches Speichern von Daten in einer Variablen:

$_SESSION['Benutzer'] = 'Honzik';

Der Webserver kümmert sich um die technische Bereitstellung der korrekten Speicherung auf dem Server und die Übermittlung der Kennung an den Nutzer.

Löschen von Sitzungen

Einzelne Werte können je nach Schlüssel getrennt gelöscht werden:

unset($_SESSION['Benutzer']);

Oder alternativ alle verfügbaren Sitzungen:

unset($_SESSION);

Hinweis: Beim Löschen einer bestimmten Sitzung wird der Schlüsselwert nicht geleert, sondern der Schlüssel wird vollständig gelöscht. Daher wird eine Fehlerwarnung ausgegeben, wenn versucht wird, einen nicht existierenden Schlüssel zu lesen. Das Vorhandensein eines Schlüssels kann mit der Funktion isset() jederzeit leicht überprüft werden.

Maximale Gültigkeit der Sitzung

Für jede gespeicherte Sitzung gibt es ein Limit, wie lange sie auf dem Server gespeichert wird. PHP enthält direkt ein Cron-Skript, das in regelmäßigen Abständen alte Sitzungen löscht.

Der Standardwert ist normalerweise "1440 Sekunden", was "24 Minuten" entspricht.

Die Erhöhung des Wertes muss an 2 Stellen vorgenommen werden:

Verwendung in PHP:

// der Server hält die Sitzung nun bis zu 3600 Sekunden = 1 Stunde lang aufrecht
ini_set('session.gc_maxlifetime', '3600');
// alle Clients (Browser) werden
// Sitzung mit einer Gültigkeit von genau 3600 Sekunden gesendet
session_set_cookie_params(3600);
session_start(); // Wir können die Sitzung beginnen!

Jan Barášek   Více o autorovi

Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.

Rád vám pomůžu:

Související články

1.
5.
Status:
All systems normal.
2024