Bonjour à tous,

Je vous écris car je bosse actuellement sur l'internationalisation d'un site web en utilisant la méthode qui à été présentée sur Grafikart, mais en passant par une variable SESSION.

Voicie le code que j'utilise:

<?php
                echo '<a href="?lang=fr_FR"><img id="france" src="images/france.gif"></a>';

                echo '<a href="?lang=en_US"><img id="uk" src="images/uk.gif"></a>';

                if (isset($_GET'lang'])) {
                    $_SESSION'lang'] = $_GET'lang'];
                } else {
                    $_SESSION'lang'] = 'en_US';
                }

                ?>

J'affiche deux petit flag et grâce à mon a href je modifie la valeur de ma variable $_GET'lang'].
S'il existe une variable $_GET'lang'] je stocke sa valeur dans une variable $_SESSION et sinon la variable $_SESSION prend une valeur par défaut.

Mon problème est que mon changement de langue interviens qu'au bout de deux clic sur le flag, pourtant j'ai tester ma variable SESSION grâce à un echo et elle prend bien la valeur du GET au premier clic.

Je comprend pas ce comportement alors si quelqu’un a une idée, peut être que mon code est mal fait je sais pas :)

Merci d'avance et bonne journée.

4 réponses


iluzzion
Auteur
Réponse acceptée

Je viens de trouver une parade à mon problème alors je post la solutions si jamais quelqu’un en à besoin, pour évite de devoir cliquer deux fois sur le drapeaux j'ai fait une redirection ...

header('Location: index.php');

Le problème viens surement d’ailleurs. Si ta variable SESSION est bien remplis c'est que ça marche, quand tu dits qu'il faut 2 cliques, qu'est ce qui ne va pas ?
N'oublis pas de bien commencer par

session_start();

pour pouvoir utilisé les sessions.
Je te conseille aussi de sortir la ligne 2 et 5 pour ne pas faire interpréter ses 2 lignes.

iluzzion
Auteur

J'ai bien démarrer ma SESSION au début de ma page.

Bah il me faut deux clic sur le drapeaux de mon choix pour que la langue change ...
J'ai tester via un echo ma variable $_GET'lang'] et $_SESSION'lang'] leurs valeur change bien au clic mais le changement de langue ne se fait que sur le second clic.

iluzzion
Auteur

Bon je pense avoir compris pourquoi ça réagit comme ça.

Je pense que c'est à cause du GET au début ça valeur est null donc ma session est initialisée à fr, mais une fois que je clic sur un lien, le GET se remplie mais apparemment la session ne récupère la valeur du GET qu’après un second clic.

Donc est il possible de remplir directement une variable SESSION via un href ? je vois pas trop comment faire...