Site Multilingue Problème cookie

Marius -  
 Marius -
Bonjour,
Je suis en phase de test de mon site web multilingue en php.
En local tout semblait bien se passer. Mais une fois mis en ligne, j'obtient un message d'erreur "Warning: Cannot modify header information - headers already sent by (output started at /XXXX/XXXX/test/index.php:2) in /XXXX/XXXXX/www/test/decide-lang.php on line 21"

Le script de gestion des langue que j'ai utilisé est celui proposer par le site phpdebutant.org.
Le fichier en question est decide-lang.php:
<?php 
if(isset($HTTP_COOKIE_VARS['lang'])) {
$lang = $HTTP_COOKIE_VARS['lang'];
} else {
// si aucune langue n'est déclarée on tente de reconnaitre la langue par défaut du navigateur
$lang = substr($HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE'],0,2); 
}
 
//script d'origine
if ($lang=='fr') {           // si la langue est 'fr' (français) on inclut le fichier fr-lang.php
include('lang/fr-lang.php'); 
} elseif ($lang=='en') {      // si la langue est 'en' (anglais) on inclut le fichier en-lang.php
include('lang/en-lang.php'); 
} 
//fin du script d'origine

//définition de la durée du cookie (1 an)
$expire = 365*24*3600; 
	 
//enregistrement du cookie au nom de lang
setcookie("lang", $lang, time() + $expire); 
 
?>


La ligne 21 est setcookie("lang", $lang, time() + $expire);

Je sais que des sujets du même type ont déjà été posés. Mais j'ai essayer les différentes solutions proposées sans y arriver.
Cependant le changement de langue fonctionne, je pense que c'est la partie concernant les cookies qui pose problème.

Merci d'avance pour votre aide

1 réponse

  1. Marius
     
    Je rectifie mon code. Il s'agit de
    <?php 
      
     if(isset($HTTP_COOKIE_VARS['lang'])) {
          $lang = $HTTP_COOKIE_VARS['lang'];
     } else {
          // si aucune langue n'est déclarée on tente de reconnaitre la langue par défaut du navigateur
    	     $lang = substr($HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE'],0,2); 
      	 }
      	 
     	 //script d'origine
     
    if ($_GET['lang']=='fr') {           // si la langue est 'fr' (français) on inclut le fichier fr-lang.php
     include('lang/fr-lang.php');
      } 
      
     else if ($_GET['lang']=='en') {      // si la langue est 'en' (anglais) on inclut le fichier en-lang.php
     include('lang/en-lang.php');
      }
     	 
     	 else {                       // si aucune langue n'est déclarée on inclut le fichier fr-lang.php par défaut
     	 include('lang/fr-lang.php');
     	 }
     	 
    
      	 //fin du script d'origine
      	 
     	 //définition de la durée du cookie (1 an)
     	 $expire = 365*24*3600; 
     	 
      //enregistrement du cookie au nom de lang
     setcookie("lang", $lang, time() + $expire); 
     	 
    ?>


    Désolé, j'avais posté le mauvais script...
    J'espère que vous pourrez m'aider car je suis toujours coincé.
    0