Nil a écrit :
les navigateurs à onglets ne droppent pas les cookies ni les variables de session si on ferme l'onglet (et qu'on en rouvre un par la suite).
Comment ça,
dropper les cookies ? Les enregistrer sur le dur ?
Je n'ai malheureusement encore jamais bossé avec des cookies, donc je ne peux pas t'aider.
Par contre, pour les variables de session, c'est normal qu'elles ne s'enregistrent pas, leur rôle est uniquement de persister d'une page PHP à une autre au cours d'une même session

!
Et 1 session == 1 thread du navigateur, or N onglets == N threads : ouvrir 2 onglets sous Firefox est strictement équivalents (fonctionnellement parlant : le gestionnaire de tâches indique un seul processus firefox.exe) à ouvrir 2 fenêtres Internet Explorer, il n'y a aucune communication entre les onglets.
Et enregistrer des variables de session pour pouvoir fermer un onglet et les récupérer dans un autre, ça s'appelle faire un cookie

!
Mais bon, vu que tu sais déjà tout ça, j'ai sans doute mal compris ta question ...
Ainsi que :
En outre j'ai l'impression que certaines variables de cessions ne s'affectent pas comme il faudrait (valeurs vides), sans que je comprenne pourquoi.
A l'initialisation ou lors des transactions ?
Pour résoudre ça, j'ai créé 2 fichiers '_Init_Session.inc.php' et '_Reception_POST.inc.php', inclus au tout début du <body> de 'index.php' qui, comme dans ton cas, est le seul visible :
[li]_Init_Session.inc.php initialise (réinitialise à chaque fois, plutôt) les variables globales utilisées dans la plupart des pages appelées par 'index.php', et initialise les variables de session (une seule fois, avec
if ( !isset( $_SESSION[ 'Ses_Var_1' ] ) ) { $_SESSION = array( 'Ses_Var_1' => "Tapoué !", 'Ses_Var_2' => 42 ) ; } ... tu vois le principe)
[li]_Reception_POST.inc.php récupère toutes les données de $_POST lors d'un changement de page (
if ( isset( $_POST ) { foreach ( $_POST as $Key => $Value ) { ... } }) et les copie dans la session avec le bon typage (un peu salement, mais bon, j'ai des circonstances atténuantes ^^)
Attention !!! J'ai fait ça à mes tous débuts en PHP, il y a 2 ans et demi, donc je doute que ce soit la meilleure solution (sans compter le typage lors de la copie $_POST -> $_SESSION, il faudrait vraiment que je cherche une méthode plus propre et flexible ...).
Désolé de ne pouvoir t'aider pour les cookies, il faudrait vraiment que je m'y mette un jour, ça pourrait servir.