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 :

[Cookies] problème avec site multilingue


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2005
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 52
    Points : 20
    Points
    20
    Par défaut [Cookies] problème avec site multilingue
    Salut à tous !

    Je réalise un site ou j'ai des drapeaux en plusieurs langues qui s'affichent. Si je clique sur allemand il traduit toue la page ou je me trouvait avant de cliquer MAIS si je clique sur un bouton du menu, il retourne automatiquement au français sans rester sur l'allemand.

    Je vous copie le code que j'ai fait :
    liens des drapeaux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <a href='?'><img src='graphs/drap_FR.gif' border=0 alt='Français'></a><br>
            <a href='?lang=an'><img src='graphs/drap_AN.gif' border=0 alt='English'></a><br>
            <a href='?lang=de'><img src='graphs/drap_DE.gif' border=0 alt='Deutsch'></a><br>
    Mise en place d'un cookie qui mémorise la langue choisie (normallement:'()
    Code : 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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    <?php
    include "membres_config.php";
           //$lang = $HTTP_COOKIES_VARS["FR"];
     	 if(isset($HTTP_COOKIE_VARS['lang'])) {
     	     $lang = $HTTP_COOKIE_VARS['lang'];
     	 }
         else {
     	     // si aucune langue n'est déclarée on tente de reconnaitre la langue par défaut du navigateur
     	     $lang = substr($HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE'],0,2);
         }
         if ($_GET['lang']=='an') {
     	     $graphs="AN";
             include('lang_anglais.php');
     	 }
         elseif ($_GET['lang']=='de') {
             $graphs="DE";
     	     include('lang_allemand.php');
     	 }
         else {
     	     $graphs="FR";
             include('lang_francais.php');
     	 }
     	 //fin du script d'origine
     
     	 //définition de la durée du cookie (1 semaine)
     	 $expire = 7*24*3600;
     
     	 //enregistrement du cookie au nom de lang
     	 setcookie("lang", $_GET['lang'], time() + $expire);
    ?>
    Ces deux morceaux de code figurent dans le header du site.

    Merci de votre aide ...
    et BONNE ANNEE

  2. #2
    Membre confirmé Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Points : 540
    Points
    540
    Par défaut
    Tu vérifie $_GET['lang'] alors que tu met ta variable dans $lang quand tu chope le cookie...


    EDIT: A j'ai édité trop tard, je n'avais pas compris le truc...

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2005
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 52
    Points : 20
    Points
    20
    Par défaut
    humm ?

  4. #4
    Membre confirmé Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Points : 540
    Points
    540
    Par défaut
    En fait il faudrait que tu fasse:

    Code : 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
    17
    18
    19
    20
    if ($_GET['lang']) {
      $lang = $_GET['lang'];
    }else if(isset($HTTP_COOKIE_VARS['lang'])) {
      $lang = $HTTP_COOKIE_VARS['lang'];
    } else {
      // si aucune langue n'est déclarée on tente de reconnaitre la langue par défaut du navigateur
      $lang = substr($HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE'],0,2);
    } 
     
    // Et ensuite :
         if ($lang=='an') {
             $graphs="AN";
             include('lang_anglais.php');
         } elseif ($lang=='de') {
             $graphs="DE";
             include('lang_allemand.php');
         } else {
             $graphs="FR";
             include('lang_francais.php');
         }

  5. #5
    Membre à l'essai
    Inscrit en
    Mars 2005
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 52
    Points : 20
    Points
    20
    Par défaut
    Alors c'est super parce que ça marhce ... mais une seule fos ... je clique un premer lien ... la langue est gardée en mémoire, si je clique sur un autre lien il revient au français pas défaut. Il garde la variable passée en url en mémoire mais pas au second clic ...
    on y est presque ! j'ai des fourmis dans les doigts

  6. #6
    Membre confirmé Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Points : 540
    Points
    540
    Par défaut
    As tu vérifié si le cookie était bien mis ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo ($HTTP_COOKIE_VARS['lang']);

  7. #7
    Membre à l'essai
    Inscrit en
    Mars 2005
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 52
    Points : 20
    Points
    20
    Par défaut
    Eh bien comme je l'ai dit dans mon précédent message il ne l'affiche que quand ?lang=an ou de figure dans mon url ... voici l'url du site ... bon il est en construction alors tout n'est pas forcment ordonné ... http://www.lefuretrouge.fr/sylviasdd

  8. #8
    Membre confirmé Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Points : 540
    Points
    540
    Par défaut
    Ah je sais (enfin je pense).

    fait ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (!isset($HTTP_COOKIE_VARS['lang'])) {
        setcookie("lang", $_GET['lang'], time() + $expire); 
    }

  9. #9
    Membre à l'essai
    Inscrit en
    Mars 2005
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 52
    Points : 20
    Points
    20
    Par défaut
    J'ai mis çaet maintenant il garde la première langue en mémoire ... si on a cliqué sur anglais ... il ne prend plus les autres langues en compte.

  10. #10
    Membre confirmé Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Points : 540
    Points
    540
    Par défaut
    Pourtant (test à l'appui), ton cookie est effacé quand on ouvre une de tes pages sans rien dans l'url.

    As tu quelque part un bout de code qui effacerais le cookie ?

  11. #11
    Membre à l'essai
    Inscrit en
    Mars 2005
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 52
    Points : 20
    Points
    20
    Par défaut
    Voici le code à l'endroit ou on en est :
    Code : 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
    17
    18
    19
    20
    21
    22
    23
    if ($_GET['lang']) {
      $lang = $_GET['lang'];
    }else if(isset($HTTP_COOKIE_VARS['lang'])) {
      $lang = $HTTP_COOKIE_VARS['lang'];
    } else {
      // si aucune langue n'est déclarée on tente de reconnaitre la langue par défaut du navigateur
      $lang = substr($HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE'],0,2);
    }
    if (!isset($HTTP_COOKIE_VARS['lang'])) {
        //définition de la durée du cookie (1 semaine)
     	 $expire = 7*24*3600;
       setcookie("lang", $_GET['lang'], time() + $expire);
    }
         if ($lang=='an') {
             $graphs="AN";
             include('lang_anglais.php');
         } elseif ($lang=='de') {
             $graphs="DE";
             include('lang_allemand.php');
         } else {
             $graphs="FR";
             include('lang_francais.php');
         }

  12. #12
    Membre confirmé Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Points : 540
    Points
    540
    Par défaut
    Je viens de vérifier sur ton site et ça commence à fonctionner.

    Avec cette modif ca devrait le faire:
    Code : 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
    17
    18
    19
    20
    21
    22
    23
    24
     
    if ($_GET['lang']) {
      $lang = $_GET['lang'];
    }else if(isset($HTTP_COOKIE_VARS['lang'])) {
      $lang = $HTTP_COOKIE_VARS['lang'];
    } else {
      // si aucune langue n'est déclarée on tente de reconnaitre la langue par défaut du navigateur
      $lang = substr($HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE'],0,2);
    }
    if (isset($_GET['lang'])) {
        //définition de la durée du cookie (1 semaine)
         $expire = 7*24*3600;
       setcookie("lang", $_GET['lang'], time() + $expire);
    }
         if ($lang=='an') {
             $graphs="AN";
             include('lang_anglais.php');
         } elseif ($lang=='de') {
             $graphs="DE";
             include('lang_allemand.php');
         } else {
             $graphs="FR";
             include('lang_francais.php');
         }

  13. #13
    Membre à l'essai
    Inscrit en
    Mars 2005
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 52
    Points : 20
    Points
    20
    Par défaut
    JE T'AIME !!!
    Viens plus souvent répondre à mes questions ;-)
    Bonne année à toi et bonne nuit ;-)

  14. #14
    Membre confirmé Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Points : 540
    Points
    540
    Par défaut
    He du calme quand meme

    Sinon juste un truc: "Haut de page" ne se dit pas "High of page" mais plutot "Top of the page" ou juste "Top"....

    Bonne année à toi

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 18/05/2006, 14h37
  2. [Cookies] Problème avec cookie
    Par chienlou dans le forum Langage
    Réponses: 4
    Dernier message: 16/05/2006, 15h55
  3. [Cookies] Problème avec GET
    Par philippef dans le forum Langage
    Réponses: 6
    Dernier message: 08/03/2006, 15h56
  4. [Cookies] problème avec if
    Par PAYASS59 dans le forum Langage
    Réponses: 11
    Dernier message: 20/02/2006, 12h07
  5. [Cookies] Problème avec les sessions PHP !!!
    Par boukay dans le forum Langage
    Réponses: 4
    Dernier message: 14/02/2006, 17h32

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