8722 sujets

Développement web côté serveur, CMS

Bonjour,

Un fichier index.php qui détecte la langue du navigateur et redirige vers soit le dossier fr/index.html ou en/index.html
Je ne comprend pas mon erreur, quelqu'un voit quelque chose?


 <?php
	$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
	if ($lang != 'fr')
	    $lang = 'en';
	header("Location: $lang/index.html",TRUE,301);
 ?>



Voici mon message d'erreur.

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\index.php:1) in C:\xampp\htdocs\index.php on line 5

Modifié par britanicus75 (03 Nov 2009 - 16:04)
Tu as surement laissé un espace vide en le début de ton fichier et le <?php .
Wow tu fais ma journée Smiley smile
Je me suis cassée la tête longtemps.
Merci c'est effectivement l'espace en trop qui me causait du trouble. Smiley lol
Salut,

Personnellement ça ne me semble pas une bonne idée de se baser sur HTTP_ACCEPT_LANGUAGE car cette valeur n'est pas totalement sûre. En tout cas il est indispensable de permettre un autre choix de langue en cas de "mauvaise supposition"...

Un bon début serait de vérifier ce qui est renvoyé par :
echo '<pre>';
print_r($_SERVER);
echo '</pre>';

Et sinon, pourquoi ne pas faire directement un classique choix de langue ?


Edit: dans ton cas il faudrait commencer par bien écrire le code et ne pas oublier les accolades car elles ne sont facultatives que pour une simple ligne :
if (test) {
  quelque chose;
} else {
   autre chose;
}

Modifié par Heyoan (08 Nov 2009 - 23:10)
if ($lang != 'fr')

"Si la langue n'es pas 'fr'..."

Donc dans ton texte tu affiches index.php si la langue n'est pas "fr" et index_en.php le cas contraire. Ya un petit soucis non ? ^^
Bonjour,

Le problème c'est que avec cette méthode, meme en ayant un bouton pr choisir la langue manuellement, ça me redirige TOUJOURS vers la page en FR.
En gros, je peux plus du tout voir ma page en Anglais.


Y a t-il moyen de palier à ça ?