Bonjour,
Mon problème concerne plutôt les cookies que la session mais j'ai pensé que c'est assez voisin...
Si besoin, qu'un modo déplace dans la bonne rubrique, je ne l'ai pas trouvée.
Résumé du problème : la valeur de la langue dans le cookie change à retardement et la page ne change donc pas de langue immédiatement !
Maintenant en détail...
Dans le menu principal figure une option "Paramètres" qui ouvre via Javascript une div cachée contenant un sous-menu en pop-up proposant, entre autres, une option "Changer langue". Cette option affiche un nouveau sous-menu pop-up et propose les langues disponibles.
Quand on clique sur la langue choisie, cela lance cette fonction Javascript :
=> L'alert donne bien la bonne url qui est de ce type : "mon_domaine.com/accueil/en"
Code Javascript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 /** * Change la langue d'affichage * @param string lang : la nouvelle langue à utiliser */ function changerLangue(lang) { var url = self.location.href; var newurl = url.substring(0, url.length - 2) + lang; alert("url : " + newurl); masquerPopupLangues(); document.location.href = newurl; }
Vous l'avez compris, "accueil" est le nom de la page et "en" est un paramètre, en l'occurrence ici la langue d'affichage choisie.
Le mécanisme d'URL-rewriting transforme cette url pour lancer le contrôleur général avec en paramètres ?page="accueil"¶ms="fr".
Le contrôleur, entre autres tâches, appelle le programme inc_cookie_control.php, dans lequel j'ai inséré ce code :
=> Le programme passe bien dans la boucle, $_GET['params'] a bien la valeur 'en' mais $_COOKIE["eden_langue"] est toujours à 'fr', ce qui fait que la page se réaffiche en français.
Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 // Récupération des paramètres demandés avec la page if($_GET['params']) { echo "j'ai get params<br />"; var_dump($_GET['params']); $params = explode('-', $_GET['params']); $les_langues = array('fr', 'en', 'es'); foreach($params as $param) { if(in_array($param, $les_langues)) { setcookie("eden_langue", $param); } } var_dump($_COOKIE); }
Si je renouvelle la page avec le navigateur (F5), alors le cookie et la page passent bien en anglais.
Une idée de la cause et une solution à me soumettre ?








Répondre avec citation

Partager