session_create_id

(PHP 7 >= 7.1.0, PHP 8)

session_create_idErzeugt eine neue Session-ID

Beschreibung

session_create_id(string $prefix = ""): string|false

session_create_id() wird verwendet, um für die aktuelle Session eine neue Session-ID zu erstellen. Die Funktion gibt eine kollisionsfreie Session-ID zurück.

Wenn keine Session aktiv ist, entfällt die Kollisionsprüfung.

Die Session-ID wird entsprechend der php.ini-Einstellungen erstellt.

Es ist wichtig, dass bei der Garbage Collection (GC) dieselbe Benutzer-ID verwendet wird wie beim Webserver. Andernfalls kann es insbesondere bei der Dateispeicherverwaltung zu Problemen mit den Zugriffsrechten kommen.

Parameter-Liste

prefix

Wenn prefix angegeben wird, wird der neuen Session-ID das prefix vorangestellt. In der Session-ID sind nicht alle Zeichen erlaubt. Erlaubt sind Zeichen aus dem Bereich a-z A-Z 0-9 , (Komma) und - (Minus).

Rückgabewerte

session_create_id() gibt eine neue kollisionsfreie Session-ID für die aktuelle Session zurück. Wenn diese Funktion ohne aktive Session verwendet wird, entfällt die Kollisionsprüfung. Bei einem Fehler wird false zurückgegeben.

Beispiele

Beispiel #1 session_create_id()-Beispiel mit session_regenerate_id()

<?php
// Meine Session-Start-Funktion unterstützt die Verwaltung von Zeitstempeln
function my_session_start() {
session_start();
// Zu alte Session-ID nicht zulassen
if (!empty($_SESSION['deleted_time']) && $_SESSION['deleted_time'] < time() - 180) {
session_destroy();
session_start();
}
}

// Meine Funktion zur Erneuerung der Session-ID
function my_session_regenerate_id() {
// Bei einer aktiven Session wird session_create_id() aufgerufen,
// um sicherzustellen, dass es keine Kollisionen gibt.
if (session_status() != PHP_SESSION_ACTIVE) {
session_start();
}
// WARNUNG: Niemals vertrauliche Zeichenfolgen als Präfix verwenden!
$newid = session_create_id('myprefix-');
// Zeitstempel für das Löschen setzen. Session-Daten dürfen aus
// verschiedenen Gründen nicht sofort gelöscht werden.
$_SESSION['deleted_time'] = time();
// Beenden der Session.
session_commit();
// Sicherstellen, dass die benutzerdefinierte Session-ID akzeptiert wird
// HINWEIS: Für den normalen Betrieb muss use_strict_mode aktiviert werden.
ini_set('session.use_strict_mode', 0);
// Neue benutzerdefinierte Session-ID festlegen
session_id($newid);
// Starten mit benutzerdefinierter Session-ID
session_start();
}

// Sicherstellen, dass use_strict_mode aktiviert ist.
// use_strict_mode ist aus Sicherheitsgründen zwingend erforderlich.
ini_set('session.use_strict_mode', 1);
my_session_start();

// Die Session-ID muss neu generiert werden, wenn
// - sich ein Benutzer anmeldet
// - sich ein Benutzer abmeldet
// - ein bestimmter Zeitraum verstrichen ist
my_session_regenerate_id();

// Nachfolgend der eigentliche Code des Programms
?>

Siehe auch