SELFPHP

SELFPHP-Druckversion
Original Adresse dieser Seite:
http://www.selfphp.de/praxisbuch/praxisbuchseite.php?site=203&group=35
© 2001-2017 E-Mail SELFPHP OHG, info@selfphp.de
© 2005-2017 E-Mail PHP5 Praxisbuch - Matthias Kannengiesser, m.kannengiesser@selfphp.de


Session-Funktionen in PHP


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:

FunktionBedeutung
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>';
{PSP}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>";

?>
{PSP}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();
?>