par
zeus » 01 août 2006, 10:20
Il me semble que le cookie est réellement modifé lors de la fin du chargement de la page sur le poste client.
Dans ton script, tu modifies la valeur du cokie et juste après, tu utilises le contenu du cookie. Si ma théorie est bonne, tu doit avoir le contenu du cookie sans la modification.
Ce que je te conseille, c'est de ne pas te fier au contenu du cookie.
Si le visiteur demande un changement de langue, conserve cette langue
Si il y a un cookie, conserve la valeur du cookie
Sinon prend la valeur par défaut
<?php
//Si le visiteur demande un changement de langue
if ($_GET['langue']) {
$langue_site = $_GET['langue'];
$fin_cookie = 3600*24;
setcookie("langue",$langue_site,time()+$fin_cookie); // on enregistre un cookie
} elseif($_COOKIE['langue']) { //Si la langue choisie existe dans le cookie
$langue_site = $_COOKIE['langue'];
} else { //Aucun choix, aucun cookie
$langue_site = 'fr';
}
?>
PS : utilise $_GET pour récupérer les valeurs passée en parametre et evite d'utiliser les noms des GET/POST/COOKIE comme nom de variable

Il me semble que le cookie est réellement modifé lors de la fin du chargement de la page sur le poste client.
Dans ton script, tu modifies la valeur du cokie et juste après, tu utilises le contenu du cookie. Si ma théorie est bonne, tu doit avoir le contenu du cookie sans la modification.
Ce que je te conseille, c'est de ne pas te fier au contenu du cookie.
Si le visiteur demande un changement de langue, conserve cette langue
Si il y a un cookie, conserve la valeur du cookie
Sinon prend la valeur par défaut
[php]<?php
//Si le visiteur demande un changement de langue
if ($_GET['langue']) {
$langue_site = $_GET['langue'];
$fin_cookie = 3600*24;
setcookie("langue",$langue_site,time()+$fin_cookie); // on enregistre un cookie
} elseif($_COOKIE['langue']) { //Si la langue choisie existe dans le cookie
$langue_site = $_COOKIE['langue'];
} else { //Aucun choix, aucun cookie
$langue_site = 'fr';
}
?>[/php]
PS : utilise $_GET pour récupérer les valeurs passée en parametre et evite d'utiliser les noms des GET/POST/COOKIE comme nom de variable ;)