session_start
(PHP 4, PHP 5, PHP 7, PHP 8)
session_start — Erzeugt eine neue Session oder setzt eine vorhandene fort
Beschreibung
Wenn session_start() aufgerufen wird oder eine Session
automatisch startet, ruft PHP die Öffnen- und Lesen-Routinen der
Session-Speicherroutine auf. Dies ist entweder eine eingebaute
Speicherroutine, die standardmäßig mitgeliefert wird oder von
Erweiterungen (wie z. B. SQLite oder Memcached) zur Verfügung gestellt
wird, oder eine eigene Routine, die mittels
session_set_save_handler() definiert wurde. Die
Lesen-Routine ruft alle vorhandenen Session-Daten (abgespeichert in einem
speziellen serialisierten Format) ab und deserialisiert sie, um damit die
$_SESSION-Superglobale zu füllen.
Um eine benannte Session zu verwenden, rufen Sie
session_name() auf, bevor Sie
session_start() aufrufen.
Wenn session.use_trans_sid
aktiviert ist, registriert die Funktion session_start()
eine interne Ausgaberoutine für das Umschreiben von URLs.
Verwendet ein Benutzer ob_gzhandler
oder ähnliches mit
ob_start(), dann ist die Reihenfolge der Funktionen
wichtig für eine korrekte Ausgabe. Zum Beispiel muss
ob_gzhandler
vor Beginn der Session registriert werden.
Parameter-Liste
options
-
Als optionaler Parameter kann ein assoziatives Array mit Optionen
angegeben werden, das die aktuell gesetzten
Session-Konfigurationsanweisungen
überschreibt. Die Schlüssel sollten nicht das
session.
-Präfix beinhalten.
Zusätzlich zu den normalen Konfigurationsanweisungen kann auch eine
read_and_close
-Option angegeben werden. Falls auf
true
gesetzt, führt sie dazu, dass die Session unmittelbar nach dem
Auslesen geschlossen wird. Dadurch lässt sich eine unnötige Sperre
vermeiden, wenn die Session-Daten nicht verändert werden.
Rückgabewerte
Falls die Session erfolgreich gestartet wurde, gibt diese Funktion true
zurück, andernfalls false
.
Beispiele
Ein grundlegendes Session-Beispiel
Beispiel #1 seite1.php
<?php
// seite1.php
session_start();
echo 'Willkommen auf Seite #1';
$_SESSION['farbe'] = 'grün';
$_SESSION['tier'] = 'Spinne';
$_SESSION['zeit'] = time();
// Funktioniert, falls das Session-Cookie akzeptiert wurde
echo '<br /><a href="seite2.php">Seite 2</a>';
// Oder die Session-ID mit übergeben, für den Fall, dass sie benötigt wird
echo '<br /><a href="seite2.php?' . SID . '">Seite 2</a>';
?>
Nach dem Aufruf von seite1.php enthält automatisch
auch die zweite Seite, seite2.php, die Session-Daten.
Lesen Sie Session-Funktionen, um
weitere Informationen über die
Übermittlung der Session-ID zu
erhalten. Dort wird zum Beispiel erklärt, worum es sich bei der Konstanten
SID
handelt.
Beispiel #2 seite2.php
<?php
// seite2.php
session_start();
echo 'Willkommen auf Seite #2<br />';
echo $_SESSION['farbe']; // grün
echo $_SESSION['tier']; // Spinne
echo date('d.m.Y H:i:s', $_SESSION['zeit']);
// Sie können auch hier, genauso wie bei seite1.php, SID verwenden
echo '<br /><a href="seite1.php">Seite 1</a>';
?>
Optionen an session_start() übergeben
Beispiel #3 Die Cookie-Gültigkeitsdauer übersteuern
<?php
// Ein persistentes Cookie senden, das einen Tag lang gültig ist.
session_start([
'cookie_lifetime' => 86400,
]);
?>
Beispiel #4 Die Session lesen und schließen
<?php
// Sofern wir wissen, dass wir keine Daten zu verändern brauchen,
// können wir die Session unmittelbar nach dem Auslesen automatisch
// schließen, um eine Sperre für die Session zu vermeiden und
// andere Seiten während der Zeit nicht am Zugriff zu hindern.
session_start([
'cookie_lifetime' => 86400,
'read_and_close' => true,
]);
Anmerkungen
Hinweis:
Um Cookie-basierte Sessions zu verwenden muss
session_start() aufgerufen werden, bevor irgend etwas
an den Browser geschickt wird.
Hinweis:
Die Verwendung von
zlib.output_compression
ist ob_gzhandler() vorzuziehen.
Hinweis:
In Abhängigkeit von der Konfiguration sendet diese Funktion verschiedene
HTTP-Header. Siehe session_cache_limiter(), um diese
Header anzupassen.