Formulaire GET:variable ignorée par IE/Opera

Résolu/Fermé
PandaNemo Messages postés 178 Date d'inscription vendredi 1 juin 2007 Statut Membre Dernière intervention 16 juin 2010 - 22 avril 2010 à 12:14
Angelneonizz Messages postés 784 Date d'inscription mardi 9 décembre 2003 Statut Membre Dernière intervention 19 février 2018 - 24 avril 2010 à 09:43
Bonjour,

J'apprends le PHP et pour faire un site multilingue, j'utilise la méthode GET pour récupérer la variable de langue.
Au chargement de la page, le langage du navigateur est bien récupéré, pas de souci de ce côté. Mais si l'internaute veut changer le langage, Firefox, Chrome et Safari prennent en compte la nouvelle valeur, par contre sous IE et Opera ça ne marche pas...

Il y a un second souci aussi:
Sous FF, Chrome et Safari, l'url renvoyée ensuite est de type
index.php?lang.x=15&lang.y=9&lang=en#
Les valeurs de lang.x et lang.y changent selon l'endroit où je clique sur le drapeau...
Savez-vous comment je pourrais enlever les mentions inutiles et avoir juste une url de type index.php?lang=en ? Est-ce qu'on doit forcément passer par l'url rewriting ?

(avec IE, l'url devient
index.php?lang.x=12&lang.y=20
et avec Opera c'est
index.php?lang.x=12&lang.y=20#
donc ils remarquent tout de même que quelque chose s'est passé...)

Voici le formulaire dans la page:
<form method="get" action="#">
<input type="image" value="fr" name="lang" src="img/fr-lang.png" width="37" height="24" alt="version française" title="français" />
<input type="image" value="en" name="lang" src="img/en-lang.png" width="37" height="25" alt="version anglaise" title="anglais" />
</form>


Dans le fichier de script php, je mets ensuite la valeur dans une variable de session:
if (isset ($_GET['lang']) && !empty($_GET['lang'])) {
$_SESSION['langue'] = $_GET['lang'];}


Je n'ai pas vu la réponse à ce souci dans d'autres discussions, j'ai peut être mal cherché. En tout cas si quelqu'un pouvait m'éclairer ce serait gentil :)



A voir également:

7 réponses

Angelneonizz Messages postés 784 Date d'inscription mardi 9 décembre 2003 Statut Membre Dernière intervention 19 février 2018 137
22 avril 2010 à 12:45
tu n'es pas obligé de faire un formulaire. :
<a href="index.php?lang=fr"><img src="img/fr-lang.png"></a>


tout simplement
1
Angelneonizz Messages postés 784 Date d'inscription mardi 9 décembre 2003 Statut Membre Dernière intervention 19 février 2018 137
22 avril 2010 à 12:43
Salut,

essais d'enlever action="#" dans ton formulaire ou alors tu mes l'adresse de la page qui va récupérer la variable action="index.php"
0
biboo_ Messages postés 1249 Date d'inscription jeudi 20 août 2009 Statut Membre Dernière intervention 14 mars 2012 106
22 avril 2010 à 12:45
Le dièse "#" fait référence à une ancre sous IE. C'est peut-être la raison de ton problème..
0
PandaNemo Messages postés 178 Date d'inscription vendredi 1 juin 2007 Statut Membre Dernière intervention 16 juin 2010 34
Modifié par PandaNemo le 22/04/2010 à 13:23
Merci pour vos réponses.

J'ai changé pour action="" mais ça ne fonctionne toujours pas...
Je ne peux pas mettre directement une adresse "en dur" car les drapeaux se trouvent sur un fichier à part contenant toute la bannière (appelé en php sur chacune des pages du site).

@Angelneonizz: si je mets un lien simple, quand je change de page la langue se remet en français. A moins qu'il y ait une manière de récupérer la valeur de l'url?
Voila comment le site est structuré, ce sera peut être plus clair:
Chaque page appelle le contenu texte situé dans un fichier xml. Pour chaque page il y a un fichier xml spécifique avec des balises <fr></fr> et <en></en>. Il est appelé par:
private function loadXmlFile($fichier) { 
$this->_simpleXML = simpleXML_load_file($this->_dirLangue.'/'.$fichier.'.xml');}

Et pour choisir quel contenu doit être affiché, dans mon script php j'ai
$resultat = $this->_simpleXML->xpath($_SESSION['langue'].'/'.$texte);


Edit:
<a href="index.php?lang=fr"><img src="img/fr-lang.png"></a>
marche sous FF, Chrome, Safari et Opera quand je change de page... mais pas sous IE... il m'embête celui la :p


Si c'est stupide et que ça marche, alors ce n'est pas stupide.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PandaNemo Messages postés 178 Date d'inscription vendredi 1 juin 2007 Statut Membre Dernière intervention 16 juin 2010 34
23 avril 2010 à 09:46
Ça ne marche décidément pas sous IE, quand on change de page ça se remet en français... :/
Est-ce que quelqu'un saurait pourquoi?
0
PandaNemo Messages postés 178 Date d'inscription vendredi 1 juin 2007 Statut Membre Dernière intervention 16 juin 2010 34
23 avril 2010 à 12:01
Problème résolu, en utilisant la solution de Angelneonizz sans spécifier de page mais il fallait en plus changer chaque lien du menu pour passer la langue en paramètre sur chaque page, sinon on perd l'info.
Merci ^^
0
biboo_ Messages postés 1249 Date d'inscription jeudi 20 août 2009 Statut Membre Dernière intervention 14 mars 2012 106
23 avril 2010 à 12:04
C'est vrai que c'est plus simple de faire passer l'info dans l'url quand tu peux. ;)
0
Angelneonizz Messages postés 784 Date d'inscription mardi 9 décembre 2003 Statut Membre Dernière intervention 19 février 2018 137
24 avril 2010 à 09:43
effectivement il faut passer la variable à chaque fois dans l'url.

si non pense aux cookies ou aux sessions, ton url sera plus propre.
tu crées une sessions ou tu stock la langue puis dans chaque fichier tu vas chercher la variable.
0