Salut,
je ne suis pas sur d'avoir compris,
mais je crois que c'est parcequ'il te manque le cas : "NOT empty && NOT in_array"
Ce que tu peux faire c'est :
En base de données, tu rajoutes un champ 'lang', dans ta table qui stock les utilisateurs.
Quand un utilisateur créer un compte, tu lui met la valeur 'fr' par défaut (ou tu lui demande quelle langue il préfère, dans le formulaire d'inscription).
Quand un utilisateur connecté, clic sur un drapeau de changement de langue :
- tu lui stock cette langue en base de données.
- et tu la stock aussi en session
Quand un utilisateur NON connecté clic sur un drapeau de changement de langue :
- tu la stock en session
Quand un utilisateur se connecte :
- tu mets en session sa valeur de 'lang' qui est enrégistrée en base de données.
Du coup si on reprend ton code, un truc du style :