Site Multilingue Problème cookie
Marius
-
Marius -
Marius -
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 phpdebutant.org.
Le fichier en question est decide-lang.php:
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
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 phpdebutant.org.
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 ($lang=='fr') { // si la langue est 'fr' (français) on inclut le fichier fr-lang.php
include('lang/fr-lang.php');
} elseif ($lang=='en') { // si la langue est 'en' (anglais) on inclut le fichier en-lang.php
include('lang/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);
?>
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
A voir également:
- Site Multilingue Problème cookie
- Site de telechargement - Accueil - Outils
- Site x - Guide
- Site pour partager des photos - Guide
- Quel site remplace coco - Accueil - Réseaux sociaux
- Site pour vendre des objets d'occasion - Guide
1 réponse
Je rectifie mon code. Il s'agit de
Désolé, j'avais posté le mauvais script...
J'espère que vous pourrez m'aider car je suis toujours coincé.
<?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);
?>
Désolé, j'avais posté le mauvais script...
J'espère que vous pourrez m'aider car je suis toujours coincé.