Sessionverwaltung

Integrierte Sessionverwaltung

Um Daten über mehrere Seiten hinweg zu transportieren, bieten sich Cookies, versteckte Formularfelder oder Transport über GET-Parameter an. Alle drei Methoden weisen ein gemeinsames Problem mit der Sicherheit auf: sie werden beim Anwender abgelegt oder sind zumindest für ihn sichtbar und damit manipulierbar.

Etwas mehr Sicherheit bietet seit PHP4 die Verwaltung von Sessions (Sitzungen).

In der Voreinstellung wird beim Start einer Session eine eindeutige ID erzeugt, die in einem temporären Cookie beim Anwender abgelegt wird. Üblicherweise wird diese Session-ID als Name einer Datei verwendet, in der die Daten der Session gespeichert werden.

# startet eine Session oder nimmt eine bereits vorhandene Session wieder auf
session_start();

# gibt die ID der aktuellen Session zurück
session_id();

Eine Session muss gestartet werden, bevor Text-, oder HTML-Ausgaben gemacht werden.
Eine Session wird beendet, sobald der Anwender den Browser schließt. Soll sie aber schon vorher, z.B. weil der Benutzer das ausdrücklich wünscht, zerstört werden, so kann man dafür session_destroy() anwenden.
Um Daten einer Session zu speichern und sie über einen längeren Zeitraum verwendbar zu machen, existiert das globale assoziative Array $_SESSION.
Sinnvoll oder nicht, nachfolgend wird exemplarisch die Session-Id gespeichert.

# Eine Session wird gestartet
session_start();

# Die ID der Session wird gespeichert
$_SESSION['SID'] = session_id();

# Gibt die gespeicherte Session-ID aus
echo $_SESSION['SID'];

# Die Session wird beendet
session_destroy();

Wenn der Anwender Cookies deaktiviert hat, funktioniert das leider nicht. Dafür gibt es die PHP-Konstante SID, die an URLs angehängt werden muss. Davon ist allerdings abzuraten, weil sie so dem Benutzer wieder sichtbar gemacht wird. Sind Cookies aktiviert, enthält die Konstante eine leere Zeichenkette.

<?php echo SID; ?>

Falls in der PHP-Konfiguration aktiviert, kann auch die Kurzform verwendet werden:

<?=SID?>
Annika , 28.08.2010 um 00:17

php session