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.
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!
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).
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.';}
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.
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.
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:
php.ini
wird die maximale Länge der Gültigkeit, die der Server beibehält, festgelegt. Der Wert wird durch die Richtlinie session.gc_maxlifetime
festgelegt,Verwendung in PHP:
// der Server hält die Sitzung nun bis zu 3600 Sekunden = 1 Stunde lang aufrechtini_set('session.gc_maxlifetime', '3600');// alle Clients (Browser) werden// Sitzung mit einer Gültigkeit von genau 3600 Sekunden gesendetsession_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:
Články píše Jan Barášek © 2009-2024 | Kontakt | Mapa webu
Status | Aktualizováno: ... | de