lasttango | Bonjour, le site que je suis en train de faire est un site multilingue (15 langues qui représentent 102 pays).
Mon script fonctionne très bien pour l'essentiel mais je n'arrive pas à créer de cookie. Ce n'est pas très indispensable, mais j'aimerais comprendre mon erreur, quand même. Quand j'isole le début du script cela fonctionne, le cookie se crée ....
code 1
Code :
- <?php
- if (isset($_GET["lang"])) $lang = $_GET["lang"];
- if ($_GET["lang"]) {
- $expire = 365*24*3600;// durée du cookie
- setcookie('idioma',$_GET["lang"],(time() + $expire));
- echo "enregistrement du cookie : ";
- echo $_COOKIE['idioma'];
- echo "/ ";
- echo $_GET["lang"];
- }
- ?>
- <center>
- <?php echo "on affiche la langue du cookie : " ?>
- <?php echo $_COOKIE['idioma']; ?><br />
- <a href="?lang=fr"><img src="images/Flags/FrFlag.png " alt="Français" title="Français" /></a>
- <a href="?lang=en"><img src="images/Flags/EnFlag.gif " alt="English" title="English" /></a>
- <a href="?lang=de"><img src="images/Flags/DeFlag.gif " alt="Deutsch" title="Deutsch" /></a>
- <a href="?lang=es"><img src="images/Flags/EsFlag.png " alt="Español" title="Español" /></a>
- <a href="?lang=it"><img src="images/Flags/ItFlag.png " alt="Italiano" title="Italiano" /></a>
- <a href="?lang=pt"><img src="images/Flags/PtFlag.png " alt="Português" title="Português" /></a>
- <a href="?lang=cs"><img src="images/Flags/CsFlag.gif " alt="Čech" title="Čech" /></a>
- <a href="?lang=da"><img src="images/Flags/DaFlag.gif " alt="Dansk" title="Dansk" /></a>
- <a href="?lang=no"><img src="images/Flags/NoFlag.gif " alt="Norsk" title="Norsk" /></a>
- <a href="?lang=nl"><img src="images/Flags/NlFlag.gif " alt="Nederlands" title="Nederlands" /></a>
- <a href="?lang=ru"><img src="images/Flags/RuFlag.gif " alt="Русский" title="Русский" /></a>
- <a href="?lang=sv"><img src="images/Flags/SvFlag.gif " alt="Svenska" title="Svenska" /></a>
- <a href="?lang=zh"><img src="images/Flags/ZhFlag.gif " alt="中文" title="中文" /></a>
- <a href="?lang=ja"><img src="images/Flags/JaFlag.gif " alt="日本語" title="日本語" /></a>
- <a href="?lang=ar"><img src="images/Flags/ArFlag.gif " alt="العربية" title="العربية" /></a>
- </center>
|
MAIS avec la suite, cela se gâte :
P.S : j'ai mis tout le script pour vous donner une idée ( même s'il y a plein de choses pas très utiles) , mais le nerf de la guerre est en rouge. Si quelqu'un a une idée ....
code 2
Code :
- <?php
- header('Content-type: text/html; charset=utf-8');
- require_once('connexion_Base_Donnees.php'); ?>
- //Affichage des caractères spéciaux aux langues universelles, nécessaire seulement après la connexion
- mysql_query("SET NAMES 'utf8'" );
- /** GESTION DES LANGUES DANS LA NAVIGATION DU SITE :
- Récupération dans l'URL de la langue choisie par l'utilisateur, sinon de celle de son navigateur ou enfin de la (les) langue(s) par défaut */
- //MODULE LANGUE
- //ON DEFINIT LA LANGUE DU NAVIGATEUR QUI VISITE LE SITE//
- if(isset($_GET["navigator"])) $navigator = $_GET["navigator"];
- $langues=explode(",",$_SERVER["HTTP_ACCEPT_LANGUAGE"]);
- $navigator=$langues[0];
- if ( $navigator == "$navigator" ){
- $navigator = "$navigator";
- echo (" le navigateur est : $navigator / " );
- }
- /* Affiche la langue du navigateur si la langue est repésentée sur le site */
- mysql_select_db($database_BaseAlpha, $BaseAlpha);
- $query_StatutLangue = "SELECT Statut, Lang, Lang_Derivee FROM Admin_ModuleLang INNER JOIN Admin_Modules ON Admin_ModuleLang.Statut = Admin_Modules.Module_Lang WHERE Admin_ModuleLang.Statut='1' AND Admin_ModuleLang.Lang LIKE '$navigator' ";
- $StatutLangue = mysql_query($query_StatutLangue, $BaseAlpha) or die(mysql_error());
- $row_StatutLangue = mysql_fetch_assoc($StatutLangue);
- $totalRows_StatutLangue = mysql_num_rows($StatutLangue);
- /* Affiche les langues dérivées si la langue d'origine est proposée sur le site */
- $var_LangDerivee = ",$navigator,";
- mysql_select_db($database_BaseAlpha, $BaseAlpha);
- $query_StatutLangueDerivee = "SELECT Statut, Lang, Lang_Derivee FROM Admin_ModuleLang INNER JOIN Admin_Modules ON Admin_ModuleLang.Statut = Admin_Modules.Module_Lang WHERE Admin_ModuleLang.Statut='1' AND Admin_ModuleLang.Lang <> '$navigator' AND Admin_ModuleLang.Lang_Derivee LIKE '%$var_LangDerivee%' ";
- $StatutLangueDerivee = mysql_query($query_StatutLangueDerivee, $BaseAlpha) or die(mysql_error());
- $row_StatutLangueDerivee = mysql_fetch_assoc($StatutLangueDerivee);
- $totalRows_StatutLangueDerivee = mysql_num_rows($StatutLangueDerivee);
- /** ON DETERMINE LA LANGUE PAR DÉFAUT DU SITE et une langue par defaut pour la navigation si la langue du navigateur est différente de la langue defaut et n'est pas l'anglais */
- $langDefaut = $row_Tble_Pref_Site['Lang_Defaut'];
- $langDefautEn = "en";
- //ADMINISTRATION DES MODULES : Le Statut du module langue doit être ON et le Statut de la langue anglaise doit aussi être ON pour que l'anglais soit représenté sur le site //
- mysql_select_db($database_BaseAlpha, $BaseAlpha);
- $query_StatutAnglais = "SELECT Admin_Modules.Module_Lang, Admin_ModuleLang.Statut, Admin_ModuleLang.Lang FROM Admin_ModuleLang INNER JOIN Admin_Modules ON Admin_Modules.Module_Lang = Admin_ModuleLang.Statut WHERE Admin_Modules.Module_Lang ='1' AND Admin_ModuleLang.Lang = 'en' AND Admin_ModuleLang.Statut <>'0'";
- $StatutAnglais = mysql_query($query_StatutAnglais, $BaseAlpha) or die(mysql_error());
- $row_StatutAnglais = mysql_fetch_assoc($StatutAnglais);
- $totalRows_StatutAnglais = mysql_num_rows($StatutAnglais);
- //definition de la variable $Pays pour l'affichage des drapeaux des pays représentés dans le module langue
- $Pays = "";
- /** ON RECUPÈRE LA VALEUR DE LA LANGUE DANS L'URL : ?lang= */
- if (isset ($_GET["lang"])) $lang = $_GET["lang"];
- if ($_GET["lang"]) {
- /** ENREGISTREMENT DE LA LANGUE CHOISIE SUR LE SITE DANS UN COOKIE */
- [#d4002a]$expire = 365*24*3600;//définition de la valeur du cookie (1 an)
- setcookie('idioma',$_GET["lang"],(time() + $expire));//PROBLEME : LE COOKIE NE SE CRÉE PAS
- echo " /enregistrement du cookie : ? ";
- echo $_COOKIE['idioma'];// le cookie ne s'affiche pas
- echo " = ";
- echo $_GET["lang"];// Poutant ici sa valeur s'affiche !?
- echo " // ";
- if ($navigator==$_GET["lang"]) {// FONCTIONNE
- $lang =$_GET["lang"] ;
- $Pays = $_GET["lang"];
- echo ("La langue $lang est sélectionnée et enregistrée dans un cookie cas 1" );
- } elseif (( $navigator!=$_GET["lang"] && $row_StatutLangueDerivee['Lang']==$_GET["lang"]) || ($navigator!=$_GET["lang"] && $row_StatutLangue['Lang']==$_GET["lang"])) {// FONCTIONNE
- $lang =$_GET["lang"] ;
- $Pays ="$navigator";
- echo ("La langue $lang est sélectionnée et enregistrée dans un cookie cas 2" );
- } elseif (( $navigator!=$_GET["lang"] && $row_StatutLangueDerivee['Lang']!=$_GET["lang"]) || ($navigator!=$_GET["lang"] && $row_StatutLangue['Lang']!=$_GET["lang"])) {// FONCTIONNE
- $lang =$_GET["lang"];
- $Pays =$_GET["lang"];
- echo ("La langue $lang est sélectionnée et enregistrée dans un cookie cas 3" );
- }
- } else {
- /** AUTRE SI LA LANGUE PRÉFÉRÉE A DÉJÀ ÉTÉ CHOISIE ET ENREGISTRÉE, ON LA RÉCUPÈRE DANS LE COOKIE */
- if ($_COOKIE['idioma']==true) {// NE FONCTIONNE PAS LE COOKIE N'A PAS ÉTÉ CRÉE PRECEDEMMENT, ON PASSE DIRECTEMENT AU CAS SUIVANT
- $lang = $_COOKIE['idioma'];
- $Pays = $_COOKIE['idioma'] ;
- echo " la langue dans le cookie est ";
- echo $_COOKIE['idioma'];
- }
- else {
- /** SI LA LANGUE FAVORITE N'A PAS ENCORE ÉTÉ CHOISIE ON APPELLE LA LANGUE PRÉFÉRÉE DU NAVIGATEUR DE L'UTILISATEUR */
- $langs=explode(",",$_SERVER["HTTP_ACCEPT_LANGUAGE"]);
- $navlang=$langs[0];
- if
- /** SI LA LANGUE DU NAVIGATEUR CORRESOND AUX LANGUES ACTIVES PROPOSÉES SUR LE SITE */
- ($navlang == $navigator && $row_StatutLangue['Lang'] == "$navigator" ) {// FONCTIONNE
- $lang= $row_StatutLangue['Lang'];
- $Pays= $row_StatutLangue['Lang'];
- echo ("la langue du navigateur est $lang " );
- } elseif
- /** SI LA LANGUE DU NAVIGATEUR CORRESPOND AUX LANGUES DÉRIVÉES DE CELLES PROPOSÉES SUR LE SITE */
- (($navlang == $navigator) && ($totalRows_StatutLangueDerivee> 0)) {// FONCTIONNE
- $lang = $row_StatutLangueDerivee['Lang'];
- $Pays = "$navigator";
- echo ("la langue dérivée du navigateur $navlang est $lang donc on affiche $lang" );
- } elseif
- /** AFFICHAGE PAR DEFFAUT DE LA LANGUE EN ANGLAIS SI LA LANGUE DU NAVIGATEUR UTILISÉ N'EST PAS REPRÉSENTÉE SUR LE SITE */
- ($navlang != "$langDefaut" && $langDefaut !="$langDefautEn" && $langDefautEn =="en" && $row_StatutAnglais['Lang']=="en" ) {// FONCTIONNE
- $lang = "en";
- $Pays = "en";
- echo ("la langue du navigateur: $navlang, n'est pas représentée sur le site. Affichage par defaut en anglais car l'anglais est proposé sur le site" );
- }
- else { // FONCTIONNE
- /** SI AUCUNE LANGUE NE CORRESPOND, UTILISER LA LANGAGUE PAR DÉFAUT SI ELLE EST DIFFÉRENTE DE L'ANGLAIS */
- $lang = "$langDefaut";
- $Pays = "$langDefaut";
- echo (" la langue du navigateur: $navlang, n'est pas représentée sur le site. La langue par defaut, dans laquelle le site a été créé, est $langDefaut " );
- }
- }
- }
- /** FIN DE LA GESTION DES LANGUES */
- ?>
- <center>
- <a href="?lang=fr"><img src="images/Flags/FrFlag.png " alt="Français" title="Français" /></a>
- <a href="?lang=en"><img src="images/Flags/EnFlag.gif " alt="English" title="English" /></a>
- <a href="?lang=de"><img src="images/Flags/DeFlag.gif " alt="Deutsch" title="Deutsch" /></a>
- <a href="?lang=es"><img src="images/Flags/EsFlag.png " alt="Español" title="Español" /></a>
- <a href="?lang=it"><img src="images/Flags/ItFlag.png " alt="Italiano" title="Italiano" /></a>
- <a href="?lang=pt"><img src="images/Flags/PtFlag.png " alt="Português" title="Português" /></a>
- <a href="?lang=cs"><img src="images/Flags/CsFlag.gif " alt="Čech" title="Čech" /></a>
- <a href="?lang=da"><img src="images/Flags/DaFlag.gif " alt="Dansk" title="Dansk" /></a>
- <a href="?lang=no"><img src="images/Flags/NoFlag.gif " alt="Norsk" title="Norsk" /></a>
- <a href="?lang=nl"><img src="images/Flags/NlFlag.gif " alt="Nederlands" title="Nederlands" /></a>
- <a href="?lang=ru"><img src="images/Flags/RuFlag.gif " alt="Русский" title="Русский" /></a>
- <a href="?lang=sv"><img src="images/Flags/SvFlag.gif " alt="Svenska" title="Svenska" /></a>
- <a href="?lang=zh"><img src="images/Flags/ZhFlag.gif " alt="中文" title="中文" /></a>
- <a href="?lang=ja"><img src="images/Flags/JaFlag.gif " alt="日本語" title="日本語" /></a>
- <a href="?lang=ar"><img src="images/Flags/ArFlag.gif " alt="العربية" title="العربية" /></a>
- </center>
|
Message édité par lasttango le 20-02-2008 à 13:46:14
|