Urgent! -pb- php et cookies - problème avec la mise en place d'un site

G un probleme pour le code qui gere les langues; en local sur easy php ça marche bien mais une fois sur le serveur d’hebergement g ce message d’erreur

Warning: Cannot modify header information - headers already sent by (output started at /home.2/creolicr/www/index.php:11) in /home.2/creolicr/www/index.php on line 33

et à ma ligne 33 g la premiére ligne où il y a setcookie :

<body bgcolor=#99ccff>

<?php
if (!isset($_COOKIE["langue"])){
setcookie("langue", "francais", time() + 62208000);
}
if (isset($_COOKIE["langue"]) && $_COOKIE["langue"] == "anglais"){
include("lang/lang_en.php");
}elseif(isset($_COOKIE["langue"]) && $_COOKIE["langue"] == "francais"){
include("lang/lang_fr.php");
}elseif(isset($_COOKIE["langue"]) && $_COOKIE["langue"] == "italien"){
include("lang/lang_it.php");
}elseif(isset($_COOKIE["langue"]) && $_COOKIE["langue"] == "allemand"){
include("lang/lang_de.php");
}elseif(isset($_COOKIE["langue"]) && $_COOKIE["langue"] == "espagnol"){
include("lang/lang_sp.php") ;
}
?>
<b><?php echo $lang_accueil?></b><?PHP echo $lang_accueil2?><br>

alors c’est quoi?

Salut

headers already sent by (output started at /home.2/creolicr/www/index.php:11) <- et à la ligne 11 tu as quoi ?

tu peux pas envoyer de cookie si tu a déjà envoyé du texte…

le <body …> est du texte, et ensuite tu veux mettre un cookie.

inverse le truc

<?php
if (!isset($_COOKIE["langue"])){
setcookie("langue", "francais", time() + 62208000);
}
if (isset($_COOKIE["langue"]) && $_COOKIE["langue"] == "anglais"){
include("lang/lang_en.php");
}elseif(isset($_COOKIE["langue"]) && $_COOKIE["langue"] == "francais"){
include("lang/lang_fr.php");
}elseif(isset($_COOKIE["langue"]) && $_COOKIE["langue"] == "italien"){
include("lang/lang_it.php");
}elseif(isset($_COOKIE["langue"]) && $_COOKIE["langue"] == "allemand"){
include("lang/lang_de.php");
}elseif(isset($_COOKIE["langue"]) && $_COOKIE["langue"] == "espagnol"){
include("lang/lang_sp.php") ;
}
?>
<body bgcolor=#99ccff>
<b><?php echo $lang_accueil?></b><?PHP echo $lang_accueil2?><br>

c bon g réglé le problème c t tout con: comme easy php avai deja crée le cookie ça faisait conflit (surtout quant tout est lancé en meme temps!
merci pour l’intervention!

allez voir www.creolicreola.com si ça marche bien avec vous (les traductions ne son pas toutes finies)

et hop la pub gratuite :smiley:

mais non ça marche pas du tout :paf:

C’est rapé.

Pour l’erreur, suffit de rechercher toute les sorties de texte avant la fonction header ou setcookie…

pour éviter ce genre d’erreurs, il y a 2 fonctions pratiques en PHP :

ob_start()
et
ob_end_flush()

Elles permettent de placer le contenu dans un output buffer, autrement dit une mémoire tampon d’affichage. Cela permet de laisser PHP gérer (et il le fait bien) l’output.

Tu places ob_start(); au tout début de la page et ob_end_flush(); à la toute fin.