Prob avec site multilangue avec cookies
Résolu/Fermé
martial_zero
Messages postés
59
Date d'inscription
jeudi 30 octobre 2008
Statut
Membre
Dernière intervention
2 mai 2011
-
10 août 2009 à 23:07
martial_zero Messages postés 59 Date d'inscription jeudi 30 octobre 2008 Statut Membre Dernière intervention 2 mai 2011 - 15 août 2009 à 15:31
martial_zero Messages postés 59 Date d'inscription jeudi 30 octobre 2008 Statut Membre Dernière intervention 2 mai 2011 - 15 août 2009 à 15:31
A voir également:
- Prob avec site multilangue avec cookies
- Site de telechargement - Accueil - Outils
- Site comme coco - Accueil - Réseaux sociaux
- Quel site remplace coco - Accueil - Réseaux sociaux
- Site pour vendre des objets d'occasion - Guide
- Supprimer les cookies - Guide
12 réponses
jjsteing
Messages postés
1670
Date d'inscription
vendredi 11 mai 2007
Statut
Contributeur
Dernière intervention
21 mai 2012
181
11 août 2009 à 08:08
11 août 2009 à 08:08
bonjour,
je pense que ton soucis viens du fait que tu inclu ton choix.htm juste avant le <HTML> et le body.. hors tu as des balises <table> avec du texte... qui se retrouve donc 'hors' de ta page..
donc moi je ferais :
//je supose que TXT_xxx sont des des constantes avec un define ( 'TXT_xxx', 'Mon texte xxx');
//sinon, variables .. dans ce cas ca serait plutot $TXT_
<?php
$Html="<html><body>"
include("choix.htm");
include("decide-lang.php");
//ici tu charge le texte TXT_xxx en fonction de la langue inscrit dans le cookie
$Html.=TXT_ACCUEIL_INDEX."<br>";
$Html.="Meteo du jour :".TXT_METEO."<br>";
$Html.="Conseil du jour : ".TXT_CONSEIL_INDEX;
$Html.="</body></html>";
echo $Html;
2-ma page choix.htm
$Html.='<table><tr><td valign="top" colspan="3" height="71px"> <a href="index.php?lang=fr" title="langue francaise">langue francaise</a></td></tr>
<tr><td valign="top" colspan="3" height="71px"> <a href="index.php?lang=en" title="langugue anglaise">langue anglaie </a></td></tr>
</table>';
3-ma page 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('fr-lang.php');
} elseif ($lang=='en') { // si la langue est 'en' (anglais) on inclut le fichier en-lang.php
include('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);
?>
ps : je supose que tu voudrais faire un peu comme moi sur mon site : jjsteing.u7n.org ;)
je pense que ton soucis viens du fait que tu inclu ton choix.htm juste avant le <HTML> et le body.. hors tu as des balises <table> avec du texte... qui se retrouve donc 'hors' de ta page..
donc moi je ferais :
//je supose que TXT_xxx sont des des constantes avec un define ( 'TXT_xxx', 'Mon texte xxx');
//sinon, variables .. dans ce cas ca serait plutot $TXT_
<?php
$Html="<html><body>"
include("choix.htm");
include("decide-lang.php");
//ici tu charge le texte TXT_xxx en fonction de la langue inscrit dans le cookie
$Html.=TXT_ACCUEIL_INDEX."<br>";
$Html.="Meteo du jour :".TXT_METEO."<br>";
$Html.="Conseil du jour : ".TXT_CONSEIL_INDEX;
$Html.="</body></html>";
echo $Html;
2-ma page choix.htm
$Html.='<table><tr><td valign="top" colspan="3" height="71px"> <a href="index.php?lang=fr" title="langue francaise">langue francaise</a></td></tr>
<tr><td valign="top" colspan="3" height="71px"> <a href="index.php?lang=en" title="langugue anglaise">langue anglaie </a></td></tr>
</table>';
3-ma page 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('fr-lang.php');
} elseif ($lang=='en') { // si la langue est 'en' (anglais) on inclut le fichier en-lang.php
include('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);
?>
ps : je supose que tu voudrais faire un peu comme moi sur mon site : jjsteing.u7n.org ;)
martial_zero
Messages postés
59
Date d'inscription
jeudi 30 octobre 2008
Statut
Membre
Dernière intervention
2 mai 2011
5
11 août 2009 à 21:32
11 août 2009 à 21:32
merci infiniment jjsteing je vais
suivre ton conseil et te donner un feedback
suivre ton conseil et te donner un feedback
martial_zero
Messages postés
59
Date d'inscription
jeudi 30 octobre 2008
Statut
Membre
Dernière intervention
2 mai 2011
5
12 août 2009 à 00:05
12 août 2009 à 00:05
salut j ai suivie tes conseil je vois que le message d " erreur a disparu
mais lorsque je clique pour changer de langue sur
$Html.='<table><tr><td valign="top" colspan="3" height="71px"> <a href="index.php?lang=fr" title="langue francaise">langue francaise</a></td></tr>
<tr><td valign="top" colspan="3" height="71px"> <a href="index.php?lang=en" title="langugue anglaise">langue anglaie </a></td></tr>
</table>';
la langue reste bloqué sur celle francaise
donc on réussit à bloquer le message d erreur mais le switch entre les langue désormais ne fonctionne pas.
mais lorsque je clique pour changer de langue sur
$Html.='<table><tr><td valign="top" colspan="3" height="71px"> <a href="index.php?lang=fr" title="langue francaise">langue francaise</a></td></tr>
<tr><td valign="top" colspan="3" height="71px"> <a href="index.php?lang=en" title="langugue anglaise">langue anglaie </a></td></tr>
</table>';
la langue reste bloqué sur celle francaise
donc on réussit à bloquer le message d erreur mais le switch entre les langue désormais ne fonctionne pas.
jjsteing
Messages postés
1670
Date d'inscription
vendredi 11 mai 2007
Statut
Contributeur
Dernière intervention
21 mai 2012
181
12 août 2009 à 07:50
12 août 2009 à 07:50
re :)
if ($lang=='fr') { // si la langue est 'fr' (français) on inclut le fichier fr-lang.php
include('fr-lang.php');
} else{ // si la langue est 'en' (anglais) on inclut le fichier en-lang.php
include('en-lang.php');
}
pas elseif.. si c'est pas fr, alors anglais..
de plus, vérifie bien que $lang prenne bien la valeur de 'fr' ou 'en' (ou autre en fait)
tient moi au jus ;)
if ($lang=='fr') { // si la langue est 'fr' (français) on inclut le fichier fr-lang.php
include('fr-lang.php');
} else{ // si la langue est 'en' (anglais) on inclut le fichier en-lang.php
include('en-lang.php');
}
pas elseif.. si c'est pas fr, alors anglais..
de plus, vérifie bien que $lang prenne bien la valeur de 'fr' ou 'en' (ou autre en fait)
tient moi au jus ;)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
martial_zero
Messages postés
59
Date d'inscription
jeudi 30 octobre 2008
Statut
Membre
Dernière intervention
2 mai 2011
5
12 août 2009 à 22:14
12 août 2009 à 22:14
mon ami je te remercie énormément
je t explique exactement les fautes que j ai fait comme ça on rigole ensemble
:
1-il n y avait pas de $_GET[] dans decide-lang.php
et c est normale que ca bloque dans la langue francaise vue que j ai demandé dans
f(isset($HTTP_COOKIE_VARS['lang'])) {
$lang = $HTTP_COOKIE_VARS['lang']
que si jamais il n ya rien dans la variable lang $lang prend par defaut la langue du navigateur par defaut
:-))))))))))))))))))))))))))) c ' est normale mon firefox est en francais .
2-je fesait des test avec une variable lang alors que je les declarés dans mon fichier choix.php en étant lan
3-j ai suprimé les espace dans mon fichier en-lang.php cat ca fesait sortir le message Warning: Cannot modify header information - headers already sent by ect ect
ca roule parfaitement
Merci énormément pour le fait que tu m aider à me faire les bonne question.
je vais mettre cette discussion comme étant résolu grâce à toi
stp est ce que tu vois ce petit effort est bien pour un débutant ?.
je t explique exactement les fautes que j ai fait comme ça on rigole ensemble
:
1-il n y avait pas de $_GET[] dans decide-lang.php
et c est normale que ca bloque dans la langue francaise vue que j ai demandé dans
f(isset($HTTP_COOKIE_VARS['lang'])) {
$lang = $HTTP_COOKIE_VARS['lang']
que si jamais il n ya rien dans la variable lang $lang prend par defaut la langue du navigateur par defaut
:-))))))))))))))))))))))))))) c ' est normale mon firefox est en francais .
2-je fesait des test avec une variable lang alors que je les declarés dans mon fichier choix.php en étant lan
3-j ai suprimé les espace dans mon fichier en-lang.php cat ca fesait sortir le message Warning: Cannot modify header information - headers already sent by ect ect
ca roule parfaitement
Merci énormément pour le fait que tu m aider à me faire les bonne question.
je vais mettre cette discussion comme étant résolu grâce à toi
stp est ce que tu vois ce petit effort est bien pour un débutant ?.
jjsteing
Messages postés
1670
Date d'inscription
vendredi 11 mai 2007
Statut
Contributeur
Dernière intervention
21 mai 2012
181
12 août 2009 à 22:26
12 août 2009 à 22:26
re:)
tres bien.. et pourvu que ca dure ;)
Si tu as d autres soucis, hesite pas ;)
courage pour la suite de ton site, c est normale de bloquer des fois, meme moi, sans dire que je suis un expert, je bloque.. sur des conneries en plus !! :p.. donc, n'ai pas paur de poser des questions ;)
@++
tres bien.. et pourvu que ca dure ;)
Si tu as d autres soucis, hesite pas ;)
courage pour la suite de ton site, c est normale de bloquer des fois, meme moi, sans dire que je suis un expert, je bloque.. sur des conneries en plus !! :p.. donc, n'ai pas paur de poser des questions ;)
@++
martial_zero
Messages postés
59
Date d'inscription
jeudi 30 octobre 2008
Statut
Membre
Dernière intervention
2 mai 2011
5
12 août 2009 à 22:33
12 août 2009 à 22:33
ah juste instant avant de dire c est fait :pppppp
je ne reussit pas à enregistrer valeur de la cookie
il fait le switch des langue mais je ne réussit pas a conserver les valeurs des cookie lorsque je réouvre la page
voilà ma soufrance.
<?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 ((isset($_GET['lang'])) && ($_GET['lang']=='fr')) { // si la langue est 'fr' (français) on inclut le fichier fr-lang.php
include('fr-lang.php');
} elseif ((isset($_GET['lang'])) && ($_GET['lang']=='en')) { // si la langue est 'en' (anglais) on inclut le fichier en-lang.php
include('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", $_GET['lang'], time() + $expire);
?>
je ne reussit pas à enregistrer valeur de la cookie
il fait le switch des langue mais je ne réussit pas a conserver les valeurs des cookie lorsque je réouvre la page
voilà ma soufrance.
<?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 ((isset($_GET['lang'])) && ($_GET['lang']=='fr')) { // si la langue est 'fr' (français) on inclut le fichier fr-lang.php
include('fr-lang.php');
} elseif ((isset($_GET['lang'])) && ($_GET['lang']=='en')) { // si la langue est 'en' (anglais) on inclut le fichier en-lang.php
include('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", $_GET['lang'], time() + $expire);
?>
martial_zero
Messages postés
59
Date d'inscription
jeudi 30 octobre 2008
Statut
Membre
Dernière intervention
2 mai 2011
5
13 août 2009 à 00:16
13 août 2009 à 00:16
desolé jjsteing
mais je ne sait pour la cookie n as pas enregsitré aucune valeur.
mais je ne sait pour la cookie n as pas enregsitré aucune valeur.
jjsteing
Messages postés
1670
Date d'inscription
vendredi 11 mai 2007
Statut
Contributeur
Dernière intervention
21 mai 2012
181
13 août 2009 à 07:49
13 août 2009 à 07:49
re :)
Sous firefox ou ie ou les deux ?
Sous firefox ou ie ou les deux ?
martial_zero
Messages postés
59
Date d'inscription
jeudi 30 octobre 2008
Statut
Membre
Dernière intervention
2 mai 2011
5
13 août 2009 à 18:44
13 août 2009 à 18:44
sous les deux j ai verfié aussi que firefox et IE donner la permission
au cookie jusqu leur expiration
peut etre j aurai due fait une faute en mettant directement $_GET['lang']
setccokie("lang",$_GET['lang'],time()+$expire);
au cookie jusqu leur expiration
peut etre j aurai due fait une faute en mettant directement $_GET['lang']
setccokie("lang",$_GET['lang'],time()+$expire);
martial_zero
Messages postés
59
Date d'inscription
jeudi 30 octobre 2008
Statut
Membre
Dernière intervention
2 mai 2011
5
13 août 2009 à 21:58
13 août 2009 à 21:58
je suis entrain de modifier mon script
de cette facon : mais rien ne change .
<?php
$lang_traduites = array(0 => 'fr', 1 => 'en');
$langue_defaut = $lang_traduites[0];
$lang_navig = explode(",",$_SERVER['HTTP_ACCEPT_LANGUAGE']);
$lang_navig = strtolower(substr(rtrim($lang_navig[0]),0,2));
$lang = !empty($_COOKIE['lang'])? $_COOKIE['lang'] : 0;
$lang = !empty($_GET['lang'])? $_GET['lang'] : $lang;
$lang = !empty($lang)? $lang : $lang_navig ;
$lang = in_array($lang,$lang_traduites)? $lang : $langue_defaut;
//script d'origine
if ((isset($_GET['lang'])) && ($_GET['lang']=='fr')) { // si la langue est 'fr' (français) on inclut le fichier fr-lang.php
include('fr-lang.php');
} elseif ((isset($_GET['lang'])) && ($_GET['lang']=='en')) { // si la langue est 'en' (anglais) on inclut le fichier en-lang.php
include('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);
?>
de cette facon : mais rien ne change .
<?php
$lang_traduites = array(0 => 'fr', 1 => 'en');
$langue_defaut = $lang_traduites[0];
$lang_navig = explode(",",$_SERVER['HTTP_ACCEPT_LANGUAGE']);
$lang_navig = strtolower(substr(rtrim($lang_navig[0]),0,2));
$lang = !empty($_COOKIE['lang'])? $_COOKIE['lang'] : 0;
$lang = !empty($_GET['lang'])? $_GET['lang'] : $lang;
$lang = !empty($lang)? $lang : $lang_navig ;
$lang = in_array($lang,$lang_traduites)? $lang : $langue_defaut;
//script d'origine
if ((isset($_GET['lang'])) && ($_GET['lang']=='fr')) { // si la langue est 'fr' (français) on inclut le fichier fr-lang.php
include('fr-lang.php');
} elseif ((isset($_GET['lang'])) && ($_GET['lang']=='en')) { // si la langue est 'en' (anglais) on inclut le fichier en-lang.php
include('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);
?>
martial_zero
Messages postés
59
Date d'inscription
jeudi 30 octobre 2008
Statut
Membre
Dernière intervention
2 mai 2011
5
15 août 2009 à 15:31
15 août 2009 à 15:31
madames et messieurs voilà
merci pour tout le monde qui m ad aidé je vous poste le script finale qui fonctionne correctement
merci infiniment pour jjsteing
le changement été fait de cette manière
$lang_traduites = array(0 => 'fr', 1 => 'en');
$langue_defaut = $lang_traduites[0];
$lang_navig = explode(",",$_SERVER['HTTP_ACCEPT_LANGUAGE']);
$lang_navig = strtolower(substr(rtrim($lang_navig[0]),0,2));
$lang = !empty($_COOKIE['lang'])? $_COOKIE['lang'] : 0;
$lang = !empty($_GET['lang'])? $_GET['lang'] : $lang;
$lang = !empty($lang)? $lang : $lang_navig ;
$lang = in_array($lang,$lang_traduites)? $lang : $langue_defaut;
include($lang.'-lang.php');
//script d'origine
//fin du script d'origine
//définition de la durée du cookie (1 an)
if ((!empty($_GET['lang']) && in_array($_GET['lang'],$lang_traduites)) && (empty($_COOKIE['lang']) || (isset($_COOKIE['lang']) && $_COOKIE['lang'] != $_GET['lang']))) setcookie('lang', $_GET['lang'], time() + 3600 * 24 * 365);
?>
merci pour tout le monde qui m ad aidé je vous poste le script finale qui fonctionne correctement
merci infiniment pour jjsteing
le changement été fait de cette manière
$lang_traduites = array(0 => 'fr', 1 => 'en');
$langue_defaut = $lang_traduites[0];
$lang_navig = explode(",",$_SERVER['HTTP_ACCEPT_LANGUAGE']);
$lang_navig = strtolower(substr(rtrim($lang_navig[0]),0,2));
$lang = !empty($_COOKIE['lang'])? $_COOKIE['lang'] : 0;
$lang = !empty($_GET['lang'])? $_GET['lang'] : $lang;
$lang = !empty($lang)? $lang : $lang_navig ;
$lang = in_array($lang,$lang_traduites)? $lang : $langue_defaut;
include($lang.'-lang.php');
//script d'origine
//fin du script d'origine
//définition de la durée du cookie (1 an)
if ((!empty($_GET['lang']) && in_array($_GET['lang'],$lang_traduites)) && (empty($_COOKIE['lang']) || (isset($_COOKIE['lang']) && $_COOKIE['lang'] != $_GET['lang']))) setcookie('lang', $_GET['lang'], time() + 3600 * 24 * 365);
?>