Changer valeur dans un cookie
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 ! :cry:
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 :
Code:
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;
} |
=> L'alert donne bien la bonne url qui est de ce type : "mon_domaine.com/accueil/en"
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 :
Code:
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);
} |
=> 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.
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 ?