Natürlich stellt Ihnen PHP eine Reihe von Funktionen zur Verfügung, welche speziell auf das Session-Management abgestimmt sind. In der folgenden Tabelle habe ich die wichtigsten zusammengefasst:
Funktion | Bedeutung | session_start() | Initialisiert bzw. startet eine Session. | session_cache_expire() | Liefert die aktuelle Cacheverfallszeit. | session_cache_limiter() | Liefert die aktuelle Cacheverwaltung oder setzt die aktuelle Cacheverwaltung. | session_decode() | Dekodiert die Daten einer Session aus einer Zeichenkette. | session_destroy() | Beendet eine Session und entfernt sämtliche Sessiondaten. | session_encode() | Kodiert die Daten der aktuellen Session als Zeichenkette. | session_get_cookie_params() | Liefert die Session-Cookie-Parameter. | session_id() | Liefert die aktuelle Session-ID oder öffnet die Session mit einer übergebenen ID. | session_is_registered() | Überprüft, ob eine globale Variable in einer Session registriert ist. | session_module_name() | Liefert das Session-Modul oder setzt das aktuelle Session-Modul. | session_name() | Liefert den Namen der aktuellen Session oder startet eine neue Session unter dem angegebenen Namen. | session_regenerate_id() | Ersetzt die aktuelle Session-ID durch eine neu erzeugte. | session_register() | Registriert eine oder mehrere globale Variablen in der aktuellen Session. | session_save_path() | Liefert den aktuellen Speicherpfad der Session oder setzt den aktuellen Speicherpfad der Session. | session_set_cookie_params() | Setzt die Session-Cookie-Parameter. | session_set_save_handler() | Setzt benutzerdefinierte Session-Speicherfunktionen. | session_unregister() | Hebt die Registrierung einer globalen Variablen in der aktuellen Session auf und löscht diese dadurch. | session_unset() | Löscht sämtliche Session-Variablen. | session_write_close() | Speichert die Session-Daten und beendet die Session. |
Einsatz von session_start()
Mithilfe der Funktion session_start() sind Sie in der Lage, eine Session zu erzeugen oder die aktuelle Session wieder aufzunehmen, die auf der Session-ID basiert, welche mit einer Anfrage, z. B. durch GET, POST oder ein Cookie, übermittelt wurde.
Beispiel – start.php
<?php
// Session Starten
session_start();
echo 'Willkommen auf Seite 1';
// Session Variablen setzen
$_SESSION['vorname'] = 'Caroline';
$_SESSION['alter'] = 27;
$_SESSION['zeit'] = time();
echo '<br><a href="seite2.php">Weiter</a><br>';
?>
Beispiel – seite2.php
<?php
session_start();
echo 'Willkommen auf Seite 2<br>';
echo $_SESSION['vorname']."<br>";
echo $_SESSION['alter']."<br>";
echo date('d.m.Y H:i:s', $_SESSION['zeit'])."<br>";
echo '<br><a href="start.php">Zum Anfang</a>';
?>
Ausgabe
Willkommen auf Seite 2
Caroline
27
28.10.2006 22:06:04
Sie können die Session-ID auch explizit mithilfe der Konstanten SID übergeben.
echo '<br><a href="seite2.php?' . SID . '">Seite 2</a>';
Nach dem Aufruf von start.php enthält automatisch auch die zweite Seite, seite2.php, die Session-Daten.
Hinweis: Bei Verwendung Cookie-basierter Sessions müssen Sie session_start() aufrufen, bevor irgendetwas an den Browser geschickt wird.
Achtung: Ab PHP 4.3.3 resultiert der Aufruf von session_start(), nachdem die Session schon gestartet wurde, in einem Fehler der Stufe E_NOTICE. Der zweite Session-Start wird in diesem Fall einfach ignoriert.
Einsatz von session_destroy()
Mithilfe der Funktion session_destroy() sind Sie in der Lage, sämtliche auf die aktuelle Session bezogenen Daten zu löschen. Hierbei sollten Sie auf die beiden folgenden Methoden zurückgreifen:
Beispiel – Löschen einer Session
<?php
// Initialisierung der Session.
session_start();
// Löschen aller Session-Variablen.
session_unset();
// Zum Schluss Löschen der Session.
session_destroy();
?>
Beispiel – Löschen einer Session mit $_SESSION
<?php
// Initialisierung der Session.
session_start();
// Löschen aller Session-Variablen.
$_SESSION = array();
// Zum Schluss Löschen der Session.
session_destroy();
?>
Sollten Sie mit einer benannten Session arbeiten,
// Session starten
session_name("Sitzung");
session_start();
dürfen Sie beim Löschvorgang nicht vergessen, die Funktion session_name() mit anzugeben.
Beispiel
<?php
// Initialisierung der Session.
session_name("Sitzung");
session_start();
// Löschen aller Session-Variablen.
session_unset();
// Zum Schluss Löschen der Session.
session_destroy();
?>
Session und Arrays
Das folgende Beispiel soll Ihnen zeigen, dass der Mechanismus auch mit Arrays einwandfrei funktioniert.
Beispiel – startprodukte.php
<?php
// Session starten
session_start();
// Array erzeugen
$produkte = array("Brillen", "Autos", "Computer");
// Array mit der Session verknüpfen
$_SESSION["produkte"] = $produkte;
// oder mit session_register("produkte");
// Weiterleitung
echo "<a href=ausgabe.php>Ausgabe</a>";
?>
Beispiel – ausgabe.php
<?php
session_start();
$s_name = session_name();
echo "<b>Session-Name:</b> $s_name<br>";
foreach ($_SESSION["produkte"] as $element) {
echo "$element<br>";
}
?>
Hinweis: Sollte der Einsatz von $_SESSION nicht möglich sein, können Sie auch session_register() einsetzen. Dies wird jedoch seit PHP 4.1.0 nicht mehr empfohlen.
Einsatz von session_name()
In der Konfigurationsdatei php.ini wird der Name der Session in dem Parameter session.name festgelegt – standardmäßig auf PHPSESSID. Sollten Sie ohne Eingriff in die php.ini oder in die Webserverkonfiguration diesen Namen ändern wollen, steht die Funktion session_name() zu Verfügung. Diese Funktion muss vor dem (Re)initialisieren der Sessiondaten (session_start()) ausgeführt werden.
Beispiel
<?php
// Einen anderen Namen für die Session festlegen
session_name("meineSession");
session_start();
?>
|