Page 1 sur 1

lire un cookie aussitot l'avoir ecrit

Posté : 08 avr. 2007, 16:47
par Gico
Bonjour
j'essaie de modifier un cookie aprés un test , manifestement le cookie est bien modifié , mais il faut recharger la page pour que le cookie soit pris en compte ( c'est pour gérer des langues).
if(isset($_GET['lg'])){
switch($_GET['lg'])
{case "EN" :setcookie("ang", "EN", time()+86400*100);
	break;
case "ES" : setcookie("lang", "ES", time()+86400*100);
	break;
case "FR" : setcookie("lang", "FR", time()+86400*100);
	break;
	}
}

switch($_COOKIE['lang']){
case "FR":
require("includes/main_FR.php");
break;
case  "EN":
require("includes/main_EN.php");
break;
case "ES":
require("includes/main_ES.php");
break;
}
la première partie c'est pour si l'utilisateur change de langue dans la page en cours, alors on réécrit le cookie. Le second script recupère le cookie et gere l'affichage.
Tous ce passe comme si la modification du cookie n'était pris en compte qu'en rechargeant la page une autre fois
Une solution? merci.

Posté : 08 avr. 2007, 18:15
par @rthur
Bonjour,

Ce comportement est normal car les cookies passent en en-tête des requêtes HTTP donc le rechargement de la page est obligatoire pour les prendre en compte.

Voila une alternative à ton script:
if(isset($_GET['lg'])){
    switch($_GET['lg']){
case "EN" :setcookie("lang", "EN", time()+86400*100);
    $lang="EN";
    break;
case "ES" : setcookie("lang", "ES", time()+86400*100);
    $lang="ES";
    break;
case "FR" : setcookie("lang", "FR", time()+86400*100);
    $lang="FR";
    break;
    }
}else{
    $lang=$_COOKIE['lang'];
}

switch($lang){
case "FR":
require("includes/main_FR.php");
break;
case  "EN":
require("includes/main_EN.php");
break;
case "ES":
require("includes/main_ES.php");
break;
} 

Posté : 08 avr. 2007, 18:23
par Gico
Super, merci ça fonctionne impec , maintenant je vais étudier ça pour comprendre comment tu t'y est pris... et merci pour l'info sur les cookies, j'ignorais.
Merci