Hier j'ai essayé le tuto d'un site multi langue, mais il y a l'erreur suivante qui s'affiche :
Notice: Undefined variable: HTTP_SERVER_VARS in C:\Program Files (x86)\EasyPHP-Devserver-17\eds-www\immobilier\public_html\lang\Lang.php on line 12
Merci de votre aide !
Code :
<?php
//On vérifie si le cookie existe déjà
if(isset($HTTP_COOKIE_VARS['lang'])) {
//Si oui, on créer une variable $lang avec pour valeur celle du cookie.
$lang = $HTTP_COOKIE_VARS['lang'];
}
else {
// si le cookie n'existe pas on tente de reconnaitre la langue par défaut du navigateur utilisé
$lang = substr($HTTP_SERVER_VARS['HTTP_ACCEPT_LANGUAGE'],0,2);
//On définit la durée du cookie (avant son expiration)
$expire = 365*24*3600;
//Puis on créé le cookie
setcookie("lang", $lang, time() + $expire);
switch($lang) {
//Si lang=fr on inclut le fichier de langue française
case 'fr':
include('lang/fr-lang.php');
break;
//Si lang=en on inclut le fichier de langue anglaise
case 'en':
include('lang/en-lang.php');
break;
}
}
?>
je reviens car j'ai essayé ce tuto à la lettre, mais les erreurs sont multiples lors de l'exécution du fichier index.php ; elles sont les suivantes :
Notice: Undefined index: lang in C:\Program Files (x86)\EasyPHP-Devserver-17\eds-www\immobilier\public_html\lang\decide-lang.php on line 3
Notice: Undefined index: lang in C:\Program Files (x86)\EasyPHP-Devserver-17\eds-www\immobilier\public_html\lang\decide-lang.php on line 7
Warning: include(lang/fr-lang.php): failed to open stream: No such file or directory in C:\Program Files (x86)\EasyPHP-Devserver-17\eds-www\immobilier\public_html\lang\decide-lang.php on line 12
Warning: include(): Failed opening 'lang/fr-lang.php' for inclusion (include_path='.;C:\php\pear') in C:\Program Files (x86)\EasyPHP-Devserver-17\eds-www\immobilier\public_html\lang\decide-lang.php on line 12
Notice: Use of undefined constant TXT_ACCUEIL_INDEX - assumed 'TXT_ACCUEIL_INDEX' in C:\Program Files (x86)\EasyPHP-Devserver-17\eds-www\immobilier\public_html\lang\index.php on line 6 TXT_ACCUEIL_INDEX Meteo du jour : Notice: Use of undefined constant TXT_METEO - assumed 'TXT_METEO' in C:\Program Files (x86)\EasyPHP-Devserver-17\eds-www\immobilier\public_html\lang\index.php on line 8 TXT_METEO Conseil du jour : Notice: Use of undefined constant TXT_CONSEIL_INDEX - assumed 'TXT_CONSEIL_INDEX' in C:\Program Files (x86)\EasyPHP-Devserver-17\eds-www\immobilier\public_html\lang\index.php on line 10 TXT_CONSEIL_INDEX
<?php
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');
}
?>
Tu dois d'abord vérifier que $_GET['lang'] existe (if (isset($_GET['lang']))). Tu peux remplacer les $_GET['lang']=='fr' par isset($_GET['lang']) && $_GET['lang']=='fr' idem pour en.
J'ai repris ton code, cependant il m'affiche comme erreur :
Parse error: syntax error, unexpected '=', expecting ']' in C:\Program Files (x86)\EasyPHP-Devserver-17\eds-www\immobilier\public_html\lang\decide-lang.php on line 4
Parfois, arrêter 5 minutes son développement permet de mieux repartir face à un problème ;)
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli