Squelettes, session_set(var, foo) et #SESSION{var}

  Bonjour à tous,

  J'observe un phénomène étrange que je ne saisis pas bien. J'ai créé
pour une association trois formulaires qui s'enchaînent sur la même page :
- formulaire_sympathisant ;
- formulaure_adherent ;
- formulaire_participant.

  Ces trois formulaires sont des formulaires CVT et fonctionnent.
Néanmoins, les réponses à l'un des formulaires déclenche l'affichage ou
non du formulaire suivant (ou une page pour régler son adhésion).

  Il y a donc une variable dans la session qui indique si le formulaire
de paiement doit être affiché. Cela se fait dans la fonction charger du
formulaire_sympathisant :

function
formulaires_membre_sympathisant_charger_dist()
{
...
        else
        {
            if (strtotime($resultat['validite_adhesion']) <
                strtotime(date("Y-m-d H:i:s")))
            {
                // Adhésion périmée
                $resultat['membre_adherent'] = 'non';
                session_set('membre_adherent', 'non');
                session_set('formulaire_paiement', 'non');
            }
            else if ($resultat['membre_adherent'] == 'oui')
            {
                // Adhésion valable d'un membre adhérent
                session_set('formulaire_paiement', 'non');
            }
        }

        $valeurs = array(
                'prenom' => $resultat['identite_prenom'],
                'nom' => $resultat['identite_nom'],
                'civilite' => $resultat['civilite'],
                'sociopro' => $resultat['cat_socio'],
                'membre_adherent' => $resultat['membre_adherent']);

echo 'formulaire_paiement : '.session_get('formulaire_paiement')."<br/>";
        sql_free($select);
    }
...
}

  Je coupe le script parce qu'il n'y a pas de problème php sous-jacent ni
problème de logique.

  Dans le squelette correspondant, j'ai écrit la chose suivante :

<BOUCLE_articles(ARTICLES){id_article}>
  [(#ID_ARTICLE|=={88}|oui)
    [(#FORMULAIRE_INSCRIPTION{6forum, 0, #URL_ARTICLE})]
    [(#SESSION{id_auteur}|oui)
      <p>Vous êtes déjà authentifié sous le nom
      #SESSION{nom}, associé à l'identifiant #SESSION{login}.
      S'il ne s'agit pas de vous, vous pouvez vous déconnecter en
      suivant ce <a href="#URL_LOGOUT">lien</a>.</p>
      <p>Vous pouvez modifier vos informations dans le formulaire
      suivant.</p>

      <div class='ajax' id='form_symp'>
        [(#FORMULAIRE_MEMBRE_SYMPATHISANT{
               [(#URL_ARTICLE|ancre_url{form_symp})]})]
      </div>

membre_adherent:#SESSION{membre_adherent}<br/>
membre_participant:#SESSION{membre_participant}<br/>
formulaire paiement:#SESSION{formulaire_paiement}<br/>

      [(#SESSION{membre_adherent}|=={oui}|oui)
        <div class="adhesion">
          L'adhésion est soumise à cotisation et ne sera validée
          qu'après règlement.
        </div>
...

  Là encore, je ne mets pas tout.

  La sortie du script est en pièce jointe. Le script php est bien appelé
avant l'affichage du formulaire et positionne à 'non' la variable
formulaire_paiement.

  Or le squelette voit une variable vide après l'exécution du script. Si
je recharge la page, je vois bien après l'affichage du premier
formulaire "formulaire paiement:non". La seule explication que j'ai est
que le squelette est interprété en totalité (avec le contenu de la
session courante) avant que la construction de la page ne commence et
que les scripts charger() ne soient appelés.

  J'ai bien essayé de mettre à jour la session en jouant avec
actualiser_sessions() ou d'autres fonctions similaires, je ne vois pas
comment faire pour que cela fonctionne la première fois.

  Je suppose qu'il s'agit d'un problème connu, mais je n'ai rien trouvé
dans la documentation officielle.

  Je suis preneur de toute idée.

  Bien cordialement,

  JB

form.png