(PHP 7 >= 7.1.0, PHP 8)
session_create_id — Erzeugt eine neue Session-ID
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.
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)
.
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.
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
?>