8796 sujets

Développement web côté serveur, CMS

Salut, j'ai un problème sur IE, en ce qui concerne une page qui comporte le code suivant

Ce code est sensé rediriger l'utilisateur en fonction de sa langue.

Si sa langue est nl, il est redirigé vers index_nl et si c'est une autre langue, la page par défaut s'ouvre.

Le problème, c'est que sous IE, la page est introuvable.
Sous FF / SAF / CAM / CHRO ça fonctionne, ma page s'afffiche...

$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);  
  
if (strcmp($lang, 'nl') === 0)  ; 
  
    $index = 'nl/index.php';  
  
    header("Location: $index",TRUE,301);


Une idée? Smiley biggol
Modifié par FranZz (03 May 2010 - 11:05)
Salut,

Je suis pas grand spécialiste php, donc peut être que je dis une bétise, mais ce n'est pas tout simplement un problème de chemin, je vois que ton index.php est dans un répertoire fr, si ton index en néerlandais est dans un sous répertoire nl, va-t-il bien le chercher dans ce répertoire ? Smiley smile
Hello et merci pour la piste!

Ecoute niveau chemin, non, c'est bien ça, j'ai même essayé avec l'adresse absolue.

Par défaut, c'est ma page index_fr.php qui devrait s'afficher, mais quand je tappe manuellement l'url de cette page dans mon navig, j'ai un message de IE me disant qu'il ne trouve pas la page, et il me renvoit sur la page par défaut de l'hébergeur, qui est index.html...

Ce que je ne comprends pas c'est que ça fonctionne avec les autres navig's!

Peut-être IE interprête-il mal mon code en début de page...
Bonjour,

peut-être que IE ne gère pas HTTP_ACCEPT_LANGUAGE ou dans une casse différente ou sous forme "FR-fr"...
Tu pourrais vérifier en faisant un
print_r($_SERVER);exit();

pour voir ce qui est dispo comme variable quand tu y vas avec IE.
Peut être pas la solution mais surement un piste Smiley smile
Alors, donc ma page ne s'affiche toujours pas!

Une fois que j'exécute le code suivant: print_r($_SERVER);exit();

J'ai ceci en retour:

IE 7 =>[HTTP_ACCEPT_LANGUAGE] => fr-be

IE 8 =>[HTTP_ACCEPT_LANGUAGE] => fr

En théorie, ça devrait être:

[HTTP_ACCEPT_LANGUAGE] => fr-fr

C'est super chaud quoi!

Ce que je ne comprends pas, c'est que selon mon code, si ce que me renvoit [HTTP_ACCEPT_LANGUAGE] est différent de nl, ma page doit s'afficher par défaut...
Mais dans ce cas précis, rien ne s'affiche...
Modifié par FranZz (03 May 2010 - 08:46)
Salut,

ça ne réponds pas à ta question mais j'ai utilisé le même procédé que toi pour la redirection en fonction de la langue du navigateur. Je te montre mon code, peut être ca pourra t'aider:

if (!isset($Langue)) {
$Langue = explode(',',$_SERVER['HTTP_ACCEPT_LANGUAGE']);
$Langue = strtolower(substr(chop($Langue[0]),0,2));
}
switch ($Langue){
				case "de":
				$langue = "de";
				header("Location: $langue/index.php");
				break;
				case "en":
				$langue = "en";
				header("Location: $langue/index.php");
				break;
				default:
				$langue = "fr";
				header("Location: $langue/index.php");
				} 


J'ai tester sur tous les navigateurs et ca fonctionne.

J'espère que ça t'aidera...
Modifié par Sp4tz (03 May 2010 - 10:37)