Formulaire GET:variable ignorée par IE/Opera

Résolu
PandaNemo Messages postés 178 Date d'inscription   Statut Membre Dernière intervention   -  
Angelneonizz Messages postés 788 Date d'inscription   Statut Membre Dernière intervention   -
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 788 Date d'inscription   Statut Membre Dernière intervention   137
 
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 788 Date d'inscription   Statut Membre Dernière intervention   137
 
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   Statut Membre Dernière intervention   106
 
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   Statut Membre Dernière intervention   34
 
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   Statut Membre Dernière intervention   34
 
Ç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   Statut Membre Dernière intervention   34
 
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   Statut Membre Dernière intervention   106
 
C'est vrai que c'est plus simple de faire passer l'info dans l'url quand tu peux. ;)
0
Angelneonizz Messages postés 788 Date d'inscription   Statut Membre Dernière intervention   137
 
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