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