microtime(true), 'step' => $strStep, 'uri' => $_SERVER['REQUEST_URI'] ?? '', 'method' => $_SERVER['REQUEST_METHOD'] ?? '', 'com_id' => $_SESSION['com_id'] ?? null, 'usa_id' => $_SESSION['usa_id'] ?? null, 'redirect_after_login' => $_SESSION['redirect_after_login'] ?? null, ); if (!empty($arrExtra)) { $arrCtx = array_merge($arrCtx, $arrExtra); } fxTraceCompteWrite(date('Y-m-d H:i:s') . ' ' . json_encode($arrCtx, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) . "\n"); } /** Bootstrap très tôt (inc_start_time) — avant inc_settings. */ function fxTraceCompteBootstrap() { if (isset($_GET['trace_compte'])) { $_SESSION['trace_compte'] = ($_GET['trace_compte'] === '1' || $_GET['trace_compte'] === 'on'); } if (empty($_SESSION['trace_compte'])) { return; } $strHost = $_SERVER['HTTP_HOST'] ?? ''; if (strpos($strHost, 'ms1inscriptiondev') === false && strpos($strHost, 'progiweb') === false) { return; } if (!headers_sent()) { header('X-Compte-Trace: bootstrap'); } fxTraceCompteWrite(date('Y-m-d H:i:s') . ' {"step":"bootstrap","uri":"' . str_replace('"', '', $_SERVER['REQUEST_URI'] ?? '') . '","host":"' . str_replace('"', '', $strHost) . '"}' . "\n"); } function fxTraceCompteRedirect($strStep, $strUrl) { fxTraceCompte($strStep, array('redirect_to' => $strUrl)); }