max(0, (int)($options['cookie_lifetime'] ?? 0)), 'path' => $path, 'domain' => (string)($options['cookie_domain'] ?? ''), 'secure' => $secure, 'httponly' => true, 'samesite' => $sameSite, )); if (!session_start()) { throw new RuntimeException('Unable to start a secure PHP session.'); } } function znote_session_regenerate(): bool { return session_status() === PHP_SESSION_ACTIVE && session_regenerate_id(true); } function znote_session_destroy(): void { if (session_status() !== PHP_SESSION_ACTIVE) { return; } $_SESSION = array(); if (ini_get('session.use_cookies')) { $params = session_get_cookie_params(); setcookie(session_name(), '', array( 'expires' => time() - 42000, 'path' => $params['path'], 'domain' => $params['domain'], 'secure' => $params['secure'], 'httponly' => $params['httponly'], 'samesite' => $params['samesite'] ?? 'Lax', )); } session_destroy(); }