Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1524 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Probleme COOKIE site multi langue[RESOLU]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Probleme COOKIE site multi langue[RESOLU]

n°1604123
mr zuppard​o
Posté le 26-08-2007 à 18:25:01  profilanswer
 

Bonjour à tous
 
Voila j'ai mi mon site en plusieur langues grace à un script recupéré sur le net.
Au depart il disent d'ecrire ce ci dans le fichier decide-langue.php
 
<?php  
 2      
 3   if ($_GET['lang']=='fr') {           // si la langue est 'fr' (français) on inclut le fichier fr-lang.php  
 4   include('lang/fr-lang.php');  
 5   }    
 6      
 7   else if ($_GET['lang']=='en') {      // si la langue est 'en' (anglais) on inclut le fichier en-lang.php  
 8   include('lang/en-lang.php');  
 9   }  
 10      
 11   else {                       // si aucune langue n'est déclarée on inclut le fichier fr-lang.php par défaut  
 12   include('lang/fr-lang.php');  
 13   }  
 14      
 15   ?>  
 
Ca fonctionne les langues changent mais quand on clic sur un lien pour acceder a une autre page elle revient au langage par defaut, ils expliquent donc comment faire en maitant un COOKIE et la reconnaissance de la langue du n'avigateur.
Ils donnent cela en correction
 
<?php    
 2      
 3   if(isset($HTTP_COOKIE_VARS['lang'])) {  
 4       $lang = $HTTP_COOKIE_VARS['lang'];  
 5   } else {  
 6       // si aucune langue n'est déclarée on tente de reconnaitre la langue par défaut du navigateur  
 7       $lang = substr($HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE'],0,2);    
 8   }  
 9      
 10   //script d'origine  
 11   if ($lang=='fr') {           // si la langue est 'fr' (français) on inclut le fichier fr-lang.php  
 12       include('lang/fr-lang.php');    
 13   } elseif ($lang=='en') {      // si la langue est 'en' (anglais) on inclut le fichier en-lang.php  
 14       include('lang/en-lang.php');    
 15   }    
 16   //fin du script d'origine  
 17      
 18   //définition de la durée du cookie (1 an)  
 19   $expire = 365*24*3600;    
 20      
 21   //enregistrement du cookie au nom de lang  
 22   setcookie("lang", $lang, time() + $expire);    
 23      
 24   ?>  
 
Mais probleme, le site reste dans le langage du navigateur, impossible de modifier les langue et il m'affiche aussi une erreur sur la colonne 22 qui est la suivante  
Warning: Cannot modify header information - headers already sent by (output started at /home/*******/money/index.php:4) in /home/******/money/lang/decide-lang.php on line 22
 
SI VOUS avez une solution....
 
Merci


Message édité par mr zuppardo le 27-08-2007 à 15:42:43

---------------
Mr-annonce.fr, les petites annonces gratuites sur internet.
mood
Publicité
Posté le 26-08-2007 à 18:25:01  profilanswer
 

n°1604126
WiiDS
20 titres en GC, 0 abandon, 0 DQ
Posté le 26-08-2007 à 19:14:12  profilanswer
 

Problème hyper connu qui sort sur ce forum environ trois fois par semaine. Fais une recherche avec "headers already sent by"


---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010
n°1604131
mr zuppard​o
Posté le 26-08-2007 à 20:11:09  profilanswer
 

Ci c'est parce qu'il faut que je place le code tout en haut de mon index est sans espace c'est fait.
 
Et aussi une question, je suppose que le cookie (le code) doit ce trouver sur toutes les pages ?
 
Merci


Message édité par mr zuppardo le 26-08-2007 à 20:11:54

---------------
Mr-annonce.fr, les petites annonces gratuites sur internet.
n°1604139
mr zuppard​o
Posté le 26-08-2007 à 20:47:11  profilanswer
 

Bon pour l'erreur j'ai mi setcookie("lang", $lang, time() + $expire); sur la premiere ligne et donc sa fonctionne enfin en tout cas il ne me sort plus l'erreur mais les langues ne ce cchanges pas!


---------------
Mr-annonce.fr, les petites annonces gratuites sur internet.
n°1604151
mr zuppard​o
Posté le 26-08-2007 à 22:35:09  profilanswer
 

Bon j'ai encore reglé un souci en modifiant le script ainsi
 
<?php  
 
$expire = 365*24*3600;
setcookie('lang', $lang, time() + $expire);
 
  if ($_GET['lang']=='fr') {           // si la langue est 'fr' (français) on inclut le fichier fr-lang.php  
  include('language-fr.php');  
  }    
   
  else if ($_GET['lang']=='en') {      // si la langue est 'en' (anglais) on inclut le fichier en-lang.php  
  include('language-en.php');  
 }  
     
  else if ($_GET['lang']=='it') {      // si la langue est 'en' (anglais) on inclut le fichier en-lang.php  
  include('language-it.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);    
  }  
   
    if ($lang =='en')  {           // si la langue est 'fr' (français) on inclut le fichier fr-lang.php  
  include('language-en.php');  
  }    
   
  else if ($lang =='fr')  {      // si la langue est 'en' (anglais) on inclut le fichier en-lang.php  
  include('language-fr.php');  
 }  
     
  else if ($lang =='it')  {      // si la langue est 'en' (anglais) on inclut le fichier en-lang.php  
  include('language-it.php');  
 }  
   
?>  
 
Mais il reste encore un souci, si change de page, par exemple je vais sur contact la langue revient dans celle du navigateur.


Message édité par mr zuppardo le 26-08-2007 à 22:36:04

---------------
Mr-annonce.fr, les petites annonces gratuites sur internet.
n°1604164
Bouchon2
Crabe glauque
Posté le 27-08-2007 à 02:05:13  profilanswer
 
n°1604165
Bouchon2
Crabe glauque
Posté le 27-08-2007 à 02:06:09  profilanswer
 

C'est normal que ça ne fonctionne pas, regarde l'ordre dans lequel la variable $lang est affectée ...

n°1604167
mr zuppard​o
Posté le 27-08-2007 à 02:23:40  profilanswer
 

Je ne connais rien au php tu peut m'claircir un peut plus?
Je debute
 merci


Message édité par mr zuppardo le 27-08-2007 à 02:23:59

---------------
Mr-annonce.fr, les petites annonces gratuites sur internet.
n°1604168
TheRom_S
Posté le 27-08-2007 à 02:35:15  profilanswer
 

Quand tu fais un "setcookie", ca rajoute une ligne dans l'entete HTTP de la réponse de ton serveur lorsqu'elle est envoyée.
Donc quant tu teste la valeur du cookie dans le même script 5 lignes plus loin, il est vide et c'est normal.
Une fois que le navigateur a reçu un cookie dans une entête de réponse HTTP, il va le renvoyer au serveur au prochain click sur un lien en le mettant dans l'entête de sa requête HTTP. C'est comme ça que ça marche les cookies


---------------
The Rom's, à votre service
n°1604170
mr zuppard​o
Posté le 27-08-2007 à 02:52:39  profilanswer
 

ok et donc comment faire?
 
sinon bouchon2  c'est pour faire quoi ton swich?
Bon pour m'entrainer j'ai fait ca !
 
switch ($lang) {
      case 'fr':   // si la langue est 'fr' (français) on inclut le fichier fr-lang.php  
   include('language-fr.php');
   break;
     case 'en':   // si la langue est 'fr' (français) on inclut le fichier fr-lang.php  
   include('language-en.php');
   break;
      case 'it':   // si la langue est 'fr' (français) on inclut le fichier fr-lang.php  
   include('language-it.php');
   break;
       
  }    
 
Ca revient au même


Message édité par mr zuppardo le 27-08-2007 à 02:53:32

---------------
Mr-annonce.fr, les petites annonces gratuites sur internet.
mood
Publicité
Posté le 27-08-2007 à 02:52:39  profilanswer
 

n°1604378
mr zuppard​o
Posté le 27-08-2007 à 12:42:50  profilanswer
 

Merci! mais comment je regle mon probleme de cookie car je souhaite que lorsqu'on choisi une langue elle reste la même quand on change de page ce qui est logique.
 
Et sinon que peut faire un utilisateur mal intentionné si il modifie le cookie et comment le modifie t-il?
 
Aussi, j'ai trouvé une formation php/mysql http://www.atao.fr/formation_php.php 900 euros 4jours.
C'est pas un peut court pour etre un bon programmeur?
 
Merci


Message édité par mr zuppardo le 27-08-2007 à 12:50:34

---------------
Mr-annonce.fr, les petites annonces gratuites sur internet.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Probleme COOKIE site multi langue[RESOLU]

 

Sujets relatifs
[résolu] PHP : lire une page web et séparation paramètres[RESOLU]Comptage impossible ou pb avec mon "left join" ?
[VBA] Via Macro Excel, Ouvrir & Editer fichier CSV [RÉSOLU]NET USE Batch & Tache Planifiée [Résolu]
[ASP.NET][C#][Résolu]données d'un datagridviewProbleme Formula
[Résolu] Problème d'arborescence avec require_once( )PB REQUETE SQL POUR SE LOGGER SUR MON SITE
Problème pour une mise en page sous forme de tableau 
Plus de sujets relatifs à : Probleme COOKIE site multi langue[RESOLU]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR