<?php
if (!function_exists('demarrer_session_publique')) {
    /**
     * Démarre (ou rejoint) la session du site public avec des attributs de cookie durcis.
     *
     * Suivi de la revue Task 9 : les session_start() nus du routeur public (flash PRG
     * de POST /admission et /admission/merci) créaient le PHPSESSID avec les seuls
     * défauts de php.ini, sans garantie httponly/SameSite. Mêmes attributs que côté
     * admin : httponly (inaccessible en JS, réduit l'impact d'un XSS), SameSite=Lax
     * (limite l'envoi du cookie sur navigation cross-site), « secure » seulement si la
     * requête est déjà en HTTPS — le forcer inconditionnellement casserait la session
     * en dev local (http://localhost:8020).
     *
     * Distinct de demarrer_session_admin() (auth.php), qui gère le cookie ISITADMIN
     * (path=/admin) : les deux sessions sont séparées par construction, et ce fichier
     * neutre évite au routeur public de charger le code d'authentification admin.
     *
     * Tolère un appel alors qu'une session est déjà active : session_set_cookie_params()
     * n'a alors plus d'effet, mais on évite le warning PHP d'un second session_start().
     */
    function demarrer_session_publique(): void {
        if (session_status() === PHP_SESSION_ACTIVE) {
            return;
        }
        session_set_cookie_params([
            'httponly' => true,
            'samesite' => 'Lax',
            'secure' => !empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off',
        ]);
        session_start();
    }
}
