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?>

