Fit4Php – Php Tutorial - Php für Einsteiger und Fortgeschrittene
Sessions
Sessions

Das HTTP-Protokoll, über welches Webseiten ausgeliefert werden, ist ein zustandsloses Protokoll. Das bedeutet, dass nachdem die Seite komplett übertragen worden ist, die Verbindung abgebaut wird und der Webserver komplett vergißt, dass er die Seite übertragen hat. Bei einem neuen Aufbau einer Verbindung zu einer anderen Seite, kann er keine Verknüpfungen zu den Eingaben, welche auf der Seite davor gemacht worden sind, herstellen. Somit gehen z.B. Artikel die in einen Warenkorb gelegt worden sind, eigentlich einfach verloren.

Allerdings bietet PHP ein Konzept der Sessions an. Dabei wird eine ID auf Seite des Clients gespeichert, welche das Wiedererkennen des Clients sichert. Es ist die Session-ID. Mit Hilfe der Session-ID kann man in gespeicherten Daten suchen und entsprechend den Warenkorb, welcher auf dem Webserver hinterlegt ist, einer neuen Seite zuordnen und auch auf dieser Seite wieder anzeigen.

Eine Session starten

PHP verfügt über zwei Möglichkeiten Sessions zu starten. PHP läßt sich so in der php.ini-Datei konfigurieren, dass Sessions automatisch gestartet werden. Diese Möglichkeit lasse ich hier einmal außer betracht, da dies einem zwar Arbeit abnimmt, aber keinen großen Nutzen bringt. Die andere Möglichkeit ist, die Funktion session_start() aufzurufen:

<?php
session_start();
?>

Die Session-ID wird entweder per Cookie oder per GET bzw. POST-Methode übergeben. Normalerweise ist in der heutigen Zeit ein manuelles Weitergeben der Session-ID nicht mehr nötig, da Cookies von fast jedem Browser unterstützt werden. Desweiteren führen Session-IDs in der URL einer Seite zu einem Sicherheitsproblem: Klickt der Surfer auf einen externen Link, so wird die Seite, von welcher er kommt mit dem Aufruf der externen Seite meistens mitgeschickt. Dies wird von den meisten Browsern so gehandhabt. Dies hat dann zur Folge, dass ein Angreifer, der an die Daten des externen Webservers kommt, die Session übernehmen kann und dann mit den gleichen Daten des Benutzers eingeloggt ist. Dieses Problem war z.B. bei einigen großen Emailanbietern vor einigen Jahren gegeben, so dass fremde Personen die Session-IDs ausspähen konnten und somit in den Account fremder Benutzer einsteigen konnten. Deshalb sollte man die alte Technik mit Session-IDs in der URL nur bedingt und unter großer Vorsicht verwenden.

Folgermaßen läßt sich ein Link mit integrierter Session-ID manuell erzeugen:

<?php
$sessionname = session_name();
$sessionid = session_id();
echo (<a href=’anwendung.php?$session_name=$sessionid>Link</a>);
?>
Variablen in einer Session speichern

Nachdem wir nun umständlich Sessions erzeugt haben, wollen wir sie auch nutzen. Hier sei nur eine Methode vorgestellt, mit welcher sich Sessions nutzen lassen, um Daten zu speichern. Es ist sinnvoll nur eine Methode zu nennen, da die andere Methode zur Referenzierung von Variablen häufiger Probleme verursacht und eigentlich keine nennenswerte Vorteile gibt.

Folgendermaßen kann man Daten in eine Session speichern:

<?php
session_start();
$_SESSION["benutzername"] = ‘benutzer’;
?>

Ein paar Seiten später läßt sich nun diese Variable wieder auslesen:

<?php
session_start();
echo (“Herzlich Willkommen, liebe(r).$_SESSION["benutzername"]);
?>
Zum Inhaltsverzeichnis