studyklar
IProg · Skript 6 · Abschnitt 3

Sessions in PHP: session_start und $_SESSION

Eine Session hält Daten eines Besuchers auf dem Server, über viele Seiten hinweg. Hier steht, wie PHP sie startet, wo es die Daten ablegt und wie die Session-ID zum Browser und zurück kommt. Rechts laufen zwei kleine Seiten mit echten Antworten. Mit Weiter geht es Schritt für Schritt voran.

Worum es geht

Skript 06, Folien 8–14: Session in PHP, Speicherung, Session-ID.

anna meldet sich auf einer Seite an. Auf der nächsten Seite soll PHP sie wiedererkennen. Wie geht das mit einer Session, und was passiert dabei zwischen Browser und Server?

Aus Skript 06, Folie 4: Häufig: Daten auf dem Server speichern, eine eindeutige Session-ID zuordnen, die Session-ID im Client (Cookie) speichern.

So gehen wir vor:

  1. Eine Session starten und Daten ablegen.
  2. Die Daten auf einer zweiten Seite lesen.
  3. Wo die Daten liegen: Speicher, Datei, Datenbank.
  4. Wie die Session-ID übertragen wird.
  5. Abmelden und weitere Funktionen.
  6. Eine Klausurfrage dazu.

Eine Session starten

Skript · Session in PHP
  • Je nach Konfiguration automatische oder manuelle Initiierung einer Sitzung
  • session.autostart in Konfigurationsdatei php.ini
  • Explizit durch session_start()
  • Registrierung von Daten: session_register()
  • Spezielles globales Array: $_SESSION

Eine Session (Sitzung) beginnt in PHP mit session_start(). Die Funktion sucht die Session-ID in der Anfrage. Fehlt sie, legt PHP eine neue Session mit neuer ID an. Weil dabei ein Cookie in den Header muss, steht der Aufruf ganz oben, vor jeder Ausgabe.

Alternativ startet PHP jede Session von selbst, wenn in der Konfigurationsdatei php.ini die Einstellung session.auto_start eingeschaltet ist.

Richtigstellung: Die Einstellung heißt session.auto_start mit Unterstrich. Und session_register() gibt es seit PHP 5.4 nicht mehr; heute nimmt man nur noch $_SESSION.

Daten merken mit $_SESSION

<?phpsession_start();// merken des übergebenen Benutzers$_SESSION['user'] = $_POST['user'];echo "Angemeldet als " . $_SESSION['user'];

$_SESSION ist ein assoziatives Array wie $_POST. Was man hineinlegt, bleibt für die ganze Sitzung erhalten. Zeile 4 ist das Beispiel der Folie: Der Benutzername aus dem Formular ($_POST['user']) kommt unter dem Schlüssel user in die Session.

Rechts die echte Antwort auf user=anna. Der Header enthält einen Cookie namens PHPSESSID; sein Wert ist die neue Session-ID, eine lange zufällige Zeichenfolge. Das hat session_start() von selbst erledigt.

Aus Skript 04, Folie 21: $_POST enthält die Formulardaten, die per method='post' übergeben werden; Schlüssel ist jeweils der Name des Parameters.
Noch 8 Schritte bis zum Ergebnis
Den ganzen Lösungsweg sehen Studierende und Lehrende der HS KL. Registriere dich mit deiner Adresse @stud.hs-kl.de oder @hs-kl.de, dann geht es hier direkt weiter.

Abbildung 1

<?phpsession_start();  
LegendeZeilen des SchrittsDer Anfang von login.php; die Seite wächst in den nächsten Schritten.