0 && is_string($valeur_cookie) && preg_match('/^[0-9a-f]{64}$/', $valeur_cookie) === 1) { try { $db = Connexion_live(); $empreinte = hash('sha256', $valeur_cookie); $stmt = $db->prepare("SELECT ID_Shipmember FROM TB_Sessions_live WHERE Empreinte=? AND ID_Bateau=? AND Expiration > NOW()"); $stmt->bind_param('si', $empreinte, $id_bateau); $stmt->execute(); $ligne = $stmt->get_result()->fetch_row(); $stmt->close(); if ($ligne) $autorise = Droit_live($db, (int)$ligne[0], $id_bateau); $db->close(); } catch (Throwable $e) { error_log("live/verifier.php : ".$e->getMessage()); $autorise = false; } } if ($autorise) { http_response_code(200); exit(); } // Refus : page explicative pour une navigation (le navigateur affiche une page), réponse brève pour l'API (appels du wasm) : $accept = $_SERVER['HTTP_ACCEPT'] ?? ''; if (strpos($accept, 'text/html') !== false) { Page_refus(401, "Session Live expirée", "Votre session Live a expiré, ou votre accès à ce bateau a changé. Ouvrez à nouveau le Live depuis la page du bateau, sur le portail."); } http_response_code(401); header('Content-Type: text/plain; charset=UTF-8'); header('Cache-Control: no-store'); echo "Session Live absente ou expirée";