Erzeugt eine neue Session-ID

# session_create_id

(PHP 7 >= 7.1.0, PHP 8)

session_create_id — Erzeugt eine neue Session-ID

### Beschreibung

function 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-zA-Z0-9,-]`. Die maximale Länge beträgt 256 Zeichen.

### 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

- session_regenerate_id() - Ersetzt die aktuelle Session-ID durch eine neu erzeugte
- session_start() - Erzeugt eine neue Session oder setzt eine vorhandene fort
- session.use_strict_mode
- SessionHandler::create_sid() - Liefert eine neue Session-ID

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open