IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Changer valeur dans un cookie


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut 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 !

    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 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;
     
    }
    => 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"&params="fr".

    Le contrôleur, entre autres tâches, appelle le programme inc_cookie_control.php, dans lequel j'ai inséré ce code :
    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);
    }
    => 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 ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  2. #2
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 420
    Par défaut
    Les cookies ne prennent leur valeur qu'au rechargement de la page. Aussi pour récupérer la langue, perso je fais un truc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $lang = isset($_COOKIE['lang']) ? $_COOKIE['lang'] : 'fr';
    $lang = isset($_GET['lang']) ? $_GET['lang'] : $lang;
    ainsi c'est toujours la variable $_GET qui a la priorité.

    Sinon si tu ne permets le changement de langue que par l'intermédiaire de javascript (d'après ce que j'ai compris) alors google ne pourra pas suivre tes traductions dans les autres langues...

  3. #3
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Merci pour le tuyau, je m'en suis inspiré.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 05/02/2011, 08h45
  2. changer valeur dans un control
    Par 3aychoucha dans le forum LabVIEW
    Réponses: 2
    Dernier message: 21/01/2011, 16h34
  3. [XSLT] Changer valeur param par cookie?
    Par gdlmus dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 09/12/2010, 06h47
  4. Multiples valeurs dans un cookie
    Par Equinoxe5 dans le forum Langage
    Réponses: 1
    Dernier message: 26/12/2008, 15h27
  5. Réponses: 3
    Dernier message: 02/06/2008, 11h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo