Hauptmenü

Untermenü

PHP/MySQL - Sessions - Überblick

1. Die Abschnitte

2. Das Problem

... sollte mittlerweile hinlänglich bekannt sein. Das HTTP-Protokoll leidet ja leider unter ständigem Gedächtnisverlust, so dass man auf "normalem" Wege keine Möglichkeit hat, Daten eines Benutzers zwischenzuspeichern. Das beste Beispiel dafür ist die wohl bekannte Warenkorb-Funktion in Online-Shops. Man legt einen Artikel dort hinein und wühlt dann anschließend noch auf diversen anderen Seiten herum.

Aber wie in des Dreiteufelsnamen soll man sich das merken? Alles per GET-Parameter durchschleifen? Oder mit unzähligen Formularen in hidden-Feldern verstecken? Das geht ja mal gar nicht. Ist eine Sauarbeit und obendrein sehr fehleranfällig. Von den Sicherheitsrisiken will ich gar nicht erst reden.

3. Die Lösung

... lautet Sessions. Wie könnte es auch anders sein bei diesem Thema. Dabei handelt es sich um einen Mechanismus, mit dem man Daten eines Besuchers zwischenspeichern und jederzeit wieder abrufen kann. Diverse Sicherheitsmechanismen verhindern einen möglichen Missbrauch. Also eine echt dolle Sache. Nur, wie funktioniert das?

4. Das Prinzip

Sobald man zum Beispiel per PHP eine Session startet, wird auf dem Server(!) eine Datei angelegt, in der man die Informationen abspeichern kann. Damit nun eine entsprechende Zuordnung vorhanden ist, wird ein Cookie im Browser des Benutzers gesetzt, in dem der Name der Sessiondatei abgespeichert ist.

Aber was passiert, wenn der Benutzer Cookies in seinem Browser abgeklemmt hat? Nun, da hat man zunächst mal Pech. Aber keine Angst, auch dafür gibt es eine Lösung, aber die kommt erst am Ende dieses Tutorials.

5. Der Beispielcode

... kann wie gehabt rechts unter selbigem Punkt herunter geladen werden. Allerdings ist er ziemlich läppisch, genauso wie die Problematik. Ich zeige euch nur die grundlegenden Dinge, denn mehr bedarf es für das Verständnis nicht.

Struktur

Vorgehensweise

Bei obigen Codeschnipseln handelt es sich um Beispiele. Allerdings werde ich auf die nur am Rande eingehen. Ihr dagegen solltet mit einer (oder mehreren) Datei(en) selbständig arbeiten.

6. Die Konfiguration

Was ich jetzt zeige, ist in den meisten Fällen völlig unerheblich, da ihr darauf eh keinen Einfluss habt. Darum stelle ich auch nur ein paar von den Schrauben vor, an denen man drehen kann. Zum einen ist es dem Verständnis förderlich und zum anderen kann es euch in einer kritischen Situation vielleicht mal den Kopf retten. Also, das Ganze geschieht in der php.ini. Wenn ihr über ein lokales System verfügt, schaut ruhig mal rein. Ansonsten bekommt ihr die Infos über das übliche phpinfo().

session.save_path

Beinhaltet den Pfad, wo die Sessiondateien gespeichert werden.

session.name

Der Cookie-Name für die Session. Standard ist PHPSESSID.

session.auto_start

Hier wird festgelegt, ob automatisch für jeden Besucher eine Session angelegt wird oder nicht. Der Standardwert ist 0 und sollte eigentlich auch nicht geändert werden. Sonst müllt man sich die Kiste unnötig zu.

session.gc_maxlifetime

Legt die Zeitdauer in Sekunden fest, in der eine Session noch als "aktiv" gewertet wird. Ist diese überschritten, so kann die Session einer Aufräumaktion zum Opfer fallen und wird geplättet.

session.cookie_lifetime

Legt die Zeitdauer fest, für die das Cookie gültig ist. Der Standardwert ist 0 und bedeutet, dass das Cookie nach dem Ende einer Sitzung (zum Beispiel durch schließen den Browsers) abgelaufen ist. Diesen Wert sollte man aus Sicherheitsgründen nicht ändern.

session.use_cookies

Damit wird definiert, ob Cookies gesetzt werden sollen oder nicht. Der Standardwert ist 1 und sollte auch nicht anders sein.

session.use_only_cookies

Hiermit wird festgelegt ob nur Cookies genutzt werden dürfen. Der Grund dafür ist, dass es bei der alternativen Methode (dazu später mehr) zum so genannten Session-Highjacking kommen kann. Ab PHP 5.3 ist der Standardwert 1, also aktiviert.

7. So!

Das war es ziemlicher starker Tobak, vulgo heftige Theorie. Jetzt werden wohl etliche von euch ein wenig bedröppelt aus der Wäsche schauen, aber keine Angst. Die Details folgen auf dem Fuße.

weiter zum nächsten Abschnitt