false, 'error' => 'Session expirée. Veuillez vous reconnecter.']); exit; } $currentUrl = $_SERVER['REQUEST_URI'] ?? '/'; $redirectParam = urlencode($currentUrl); $target = ($loginPage ?? '/login.php') . '?redirect=' . $redirectParam; header('Location: ' . $target); exit; } } function csrf_token(): string { if (session_status() === PHP_SESSION_NONE) { session_start(); } if (empty($_SESSION['csrf_token'])) { $_SESSION['csrf_token'] = bin2hex(random_bytes(32)); } return $_SESSION['csrf_token']; } function verify_csrf(?string $token): bool { if (session_status() === PHP_SESSION_NONE) { session_start(); } if (empty($_SESSION['csrf_token']) || !$token) { return false; } return hash_equals($_SESSION['csrf_token'], $token); }