PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 16-04-2012 20:24:25

Canchel
Membre
Inscription : 16-04-2012
Messages : 2

Site Multilingue Problème cookie

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 (http://www.phpdebutant.org/article107.php)
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 ($_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);
   
?>

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

Hors ligne

#2 17-04-2012 16:11:23

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Site Multilingue Problème cookie

Bonjour,

voici une 'tite dose d'opti à partir de la ligne 12 à la ligne 23.


if ($lang<>'fr' && $lang <>'en'){$lang='fr';}
require_once("lang/$lang-lang.php");
 

Sinon pour l'erreur que tu as, c'est que tu dois avoir une sortie avant un header ou avant ton session_start() (une erreur, un echo ou un print)

++


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#3 17-04-2012 22:14:47

Canchel
Membre
Inscription : 16-04-2012
Messages : 2

Re : Site Multilingue Problème cookie

Je te remercie pour ta réponse.
J'ai résolu mon problème et te remercie pour tes conseils que j'ai appliqué.
Je me pose une question :
L'utilisation de ce système de traduction anglais français va t il avoir des conséquence sur le référencement de mon site?
Si toute mes pages commencent par

<?php
 require("decide-lang.php");
 ?>

Dans quelle langue le robot va t il interpréter mon site ?

Merci d'avance.

Hors ligne

#4 18-04-2012 08:30:54

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Site Multilingue Problème cookie

Bonjour,

La langue utilisée pour le contenu de votre site doit être défini au niveau du header de votre html dans une balise META prévue à cet effet. L'idéal dans votre cas est donc de définir cette balise META dynamiquement en fonction de la localisation appliquée.
Je vous laisse vous documenter sur la syntaxe d'une telle balise (très documentée sur internet).

++

Dernière modification par Jc (18-04-2012 08:31:07)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

Pied de page des forums