Tom's Guide > Forum > Programmation > [Résolu] Erreur php : Warning: Cannot modify header information

[Résolu] Erreur php : Warning: Cannot modify header information

Forum Programmation : [Résolu] Erreur php : Warning: Cannot modify header information

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !

Lire la meilleure réponse, apportée par mcpherson.

Mot :    Pseudo :           
 

Bonjour à tous,

J'espère qu'il y aura une personne qui prendra le temps de m'aider carlà j'ai du mal, j'ai pas assez de connaissance en PHP.

J'ai modifié un site fait à partir de la structure nuked-clan : bdg-clan.com

J'ai deux problèmes qui sont peut-être liées.

1 - Sur firefox il y a ses 3 symboles en haut a gauche "" comme si quelque chose existais alorsque je n'ai pas mis de caractères.

2 - Quand je veut me connecter a mon panneaux d'administration j'ai cette erreur :
"Warning: Cannot modify header information - headers already sent by (output started at /home/bdgclan/www/themes/best_fire/theme.php:1) in /home/bdgclan/www/modules/Admin/login.php on line 45", que je ne connais pas du tout.

Voici maintenant un copier/coller des pages concerné par le message :

theme.php

Citation :

<?php
function top()
{
global $nuked, $op, $file, $user,$language, $bgcolor2, $page, $bgcolor1, $color1;
include("themes/best_fire/blocks/config.php" );
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<title>Site des BDG</title>
<meta name="verify-v1" content="+bMJJ4UHbNRnuaR6D0hMHZKbuxsyCZyCVdBHY1UVJT4=" />
<link rel="shortcut icon" href="http://bdg-clan.com/images/favicon.png" />
<link rel="shortcut icon" type="image/png" href="http://bdg-clan.com/images/favicon.png" />
<meta name="keywords" content="<?php echo $nuked['keyword'] ?>,BDG, Bande, Gay, CSS, Counter-Stike,Counter-strike Source, Source, Counter, Site" />
<meta name="Description" content="<?php echo $nuked['description'] ?>,BDG, Bande, Gay, CSS, Counter-Stike,Counter-strike Source, Source, Counter, Site" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="content-style-type" content="text/css" />
<link title="css1" rel="stylesheet" type="text/css" href="themes/best_fire/style.css" media="screen" />
<link title="css2" rel="alternate stylesheet" href="themes/best_fire/style1.css" type="text/css" media="screen">
<!-- <link title="css3" rel="alternate stylesheet" href="themes/best_fire/style2.css" type="text/css" media="screen">
<link title="css4" rel="alternate stylesheet" href="themes/best_fire/style3.css" type="text/css" media="screen">-->
<script src="themes/best_fire/rooster.js" type="text/javascript"></script>
</head>
<body>
<div id="site">
<div id="music">
<object type="application/x-shockwave-flash" data="http://assets.myflashfetish.com/swf/mp3/mff-stick.swf" style="width:198px;height:34px"><param name="movie" value="http://assets.myflashfetish.com/swf/mp3/mp3player.swf" /><param name="quality" value="high" /><param name="scale" value="noscale" /><param name="salign" value="TL" /><param name="wmode" value="transparent"/><param name="flashvars" value="myid=21842326&path=2009/05/12&mycolor=ff0000&mycolor2=0b191c&mycolor3=FFFFFF&autoplay=true&rand=1&f=4&vol=5&pat=0&grad=true&ow=270&oh=310"/></object>
</div>
<div id="loginhaut">
<?php include("themes/best_fire/blocks/test.php" ) ?>
</div>
<?php if($file == "News" ) echo $test3; else echo $test4; ?>
<center>
<?php include("themes/best_fire/blocks/menu.php" ) ?>
<table style="margin-left: auto; margin-right: auto; width: auto;" border="0x" cellpadding="0" cellspacing="0">
<tr style="vertical-align: top;">
<td>
<td align="center" >
<?php if ($file =='News')
{
get_blok('gauche');
}
?>

</td>
<td id="colonnes"></td>
<td align="center">
<div id="hautnews">
<div id="un">
<?php include("themes/best_fire/blocks/last_news.php" ) ?>
</div>
<div id="deux">
<script src="http://www.clocklink.com/embed.js"></script><script type="text/javascript" language="JavaScript">obj=new Object;obj.clockfile="5005-red.swf";obj.TimeZone="GMT0200";obj.width="140";obj.height="45";obj.wmode="transparent";showClock(obj);</script>
<?php include("themes/best_fire/blocks/membres.php" ) ?>
</div>
<div id="trois">
<?php include("themes/best_fire/blocks/last_wars.php" ) ?>
</div>
</div>

<div id="colonnehori"></div>
<A HREF="themes/best_fire/blocks/lecteurbdg.html" TARGET="popup" onClick="ouvrir(this.href,this.target);return false"><img src="themes/best_fire/images/fondmusic.png"/ height="50px" width="630px"><!--Ouvrir le lecteur dans une autre fenetre --------- Cliquez ici<br><br> Chargement entre 20s et 1 minute--></A>
<div id="colonnehori2"></div>
<br>
<?php
if ($file =='News')
{
get_blok('centre');
}
}//Fin de Fonction
function footer()
{
global $nuked, $op, $file, $page;
include("themes/best_fire/blocks/config.php" );
if ($file =='News')
{
echo "<br />";
get_blok('bas');
}
?>
</td>
</td>
</div>
<td id="colonnes"></td>

<td align="center">
<!--<div > <a href="<?php echo $sponsor2_lien; ?>"><img src="<?php echo $sponsor2; ?>" /></img></a></div>-->
<?php get_blok("droite" );?>
</td>
</tr>
</table>
<!--<?php if ($file =='News')
{ ?>
<?php include("themes/best_fire/blocks/stats.php" ) ?>
<?php
}
else echo $test2; ?>-->
<br/>
<?php
}///////////////////////////////////////////FONCTION FOOTER////////////////////////////////////////////////
function news($data)
{
$posted = _NEWSPOSTBY . "&nbsp;<a href=\"index.php?file=Members&amp;op=detail&amp;autor=" . urlencode($data['auteur']) . "\">" . $data['auteur'] . "</a>&nbsp;" . _THE . "&nbsp;". $data['date']. "&nbsp;" . _AT . "&nbsp;" . $data['heure'];
$comment = "-&nbsp;<a href=\"index.php?file=News&amp;op=index_comment&amp;news_id=" . $data['id'] . "\">" . _NEWSCOMMENT . "</a>&nbsp;(" . $data['nb_comment'] . " )";
?>
<div class="news">
<div class="titre">
<div class="re">
<?php echo $data['titre']; ?>
</div>
</div>
<div class="txt">
<div class="re">
<?php echo $data['texte']; ?>
</div>
</div>
<div class="com">
<div class="re">
<?php echo $comment; ?>
</div>
</div>
</div>
<?php
}


function block_centre($block)
{
?>
<div class="news" >
<div class="titre">
<div class="re" >
<?php echo $block[titre]; ?>
</div>
</div>
<div class="txt" >
<div class="re" >
<?php echo $block['content']; ?>
</div>
</div>
<div class="com"></div>
</div>
<?php
}

function block_bas($block)
{
?>
<div class="news">
<div class="titre">
<div class="re">
<?php echo $block[titre]; ?>
</div>
</div>
<div class="txt">
<div class="re">
<?php echo $block['content']; ?>
</div>
</div>
<div class="com"></div>
</div>


<?php
}

function block_gauche($block)
{
?>
<div class="gauche">
<div class="titre">
<?php echo $block[titre]; ?>
</div>
<?php echo $block['content']; ?>
<br><br><br>
</div>

<?php
}
function block_droite($block)
{
?>
<div class="droite">
<div class="titre">
<?php echo $block[titre]; ?>
</div>
<?php echo $block['content']; ?>
<br><br><br>
</div>

<?php
}
function opentable()
{
global $nuked,$file,$op;
?>
<div id="open">
<div id="open2">
<?php
}
function closetable()
{
global $nuked,$file,$op;
?>
</div>
</div>
</div>
</body>
<?php
}
?>



login.php

Citation :

<?php
// -------------------------------------------------------------------------//
// Nuked-KlaN - PHP Portal //
// http://www.nuked-klan.org //
// -------------------------------------------------------------------------//
// This program is free software. you can redistribute it and/or modify //
// it under the terms of the GNU General Public License as published by //
// the Free Software Foundation; either version 2 of the License. //
// -------------------------------------------------------------------------//
if (!defined("INDEX_CHECK" ))
{
die ("<div style=\"text-align: center;\">You cannot open this page directly</div>" );
}

global $user, $nuked, $nuked_nude, $language, $theme, $bgcolor1, $bgcolor2, $bgcolor3;
translate("modules/Admin/lang/" . $language . ".lang.php" );
translate("modules/User/lang/" . $language . ".lang.php" );

$url = "index.php";
$message = "";

if ($user && isset($_POST['admin_password']) && $_POST['admin_password'] != "" )
{
$cookie_admin = $nuked['cookiename'] . "_admin_session";

$sql = mysql_query("SELECT pseudo FROM " . USER_TABLE . " WHERE pass = '" . md5($_POST['admin_password']) . "' AND UPPER(pseudo) = UPPER('" . $user[2] . "')" );
list($pseudo) = mysql_fetch_array($sql);
$check = mysql_num_rows($sql);

if ($check == 1)
{
list($pseudo) = mysql_fetch_array($sql);

if ($_POST['formulaire'] == 0 && $_SERVER['HTTP_REFERER'] != "" )
{
list($url_ref, $redirect) = split('\?', $_SERVER['HTTP_REFERER']);
if ($redirect == "file=Admin&page=login" ) $redirect = "file=Admin";
$url = "index.php?" . $redirect;
}
else
{
$url = "index.php?file=Admin";
}
setcookie($cookie_admin, $user[0]);
if (!isset($_COOKIE[$cookie_session]))
{
$message = _ERRORCOOKIE;
}
else $message = _ADMINPROGRESS;

}
else
{
$message = _BADLOGADMIN;
$url = "index.php?file=Admin";
}

echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n"
. "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"fr\">\n"
. "<head><title>" . $nuked['name'] . " :: " . $nuked['slogan'] . " ::</title>\n"
. "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\" />\n"
. "<meta http-equiv=\"content-style-type\" content=\"text/css\" />\n"
. "<link title=\"style\" type=\"text/css\" rel=\"stylesheet\" href=\"themes/" . $theme . "/style.css\" /></head>\n"
. "<body style=\"background: " . $bgcolor2 . ";\"><div><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /></div>\n"
. "<table width=\"600\" style=\"margin-left: auto;margin-right: auto;text-align: left;background: " . $bgcolor3 . ";\" cellspacing=\"1\" cellpadding=\"20\">\n"
. "<tr><td style=\"background: " . $bgcolor1 . ";\" align=\"center\"><big><b>" . $message . "</b></big></td></tr></table></body></html>";

redirect($url, 2);
}
else
{
if (!$user) redirect("index.php?file=User&op=login_screen", 0);
else if ($nuked_nude)
{
redirect("index.php?file=Admin", 0);
}
else
{
if ($_POST) $check = 1;
else $check = 0;

opentable();

echo "<br /><div style=\"text-align: center;\"><big><b>" . _ADMINSESSION . "</b></big></div><br />\n"
. "<form action=\"index.php?file=Admin&amp;nuked_nude=login\" method=\"post\">\n"
. "<table style=\"margin-left: auto;margin-right: auto;text-align: left;\">\n"
. "<tr><td><b>" . _NICK . " :</b></td><td><input type=\"text\" name=\"admin_pseudo\" value=\"" . $user[2] . "\" size=\"15\" maxlength=\"180\" /></td></tr>\n"
. "<tr><td><b>" . _PASSWORD . " :</b></td><td><input type=\"password\" name=\"admin_password\" size=\"15\" maxlength=\"15\" /></td></tr>\n"
. "<tr><td colspan=\"2\" align=\"center\"><input type=\"submit\" value=\"" . _TOLOG . "\" /></td></tr><tr><td colspan=\"2\">&nbsp;<input type=\"hidden\" name=\"formulaire\" value=\"" . $check . "\" /></td></tr>\n"
. "<tr><td colspan=\"2\"><b><a href=\"index.php?file=User&amp;op=oubli_pass\">" . _LOSTPASS . "</a></b></td></tr></table></form><br />\n";

closetable();
}
}

?>



Merci d'avance à tous pour vos réponses.

Cordialement NipaL

et bien en fait, lorsque tu met des espaces ou du code html ou un quelquonque truc qui provoque un affichage, les entètes http ont déja été envoyé au serveur, c'est une spécificité du protocole http. or l'utilisation de cookie ou de la fonction header transmet des informations qui doivent etre contenu dans les ent tetes.
Si tu fais par exemple header après avoir fais du html avant, les en tètes ont été envoyé et par cette fonction tu essaie de les modifier pour les renvoyer ce qui est impossible.
pour ton problème, je ne comprend pas en fait à quoi sert ton theme.php, je ne vois pas où tu t'en sers après.
où utilise tu ce fichier?
si tu l'utilise avant les setCookie le problme vient de la puisque ton theme.php contient pleins de html ce qui inclue donc que les en tètes partent avant que tu fasse appel à cookie.
j'espère etre à peu près clair
Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

Erreur très simple, tu fais appel à la fonction header() à mon avis pour rediriger, alors que tu as déjà commencé à envoyer de contenu chez le client (le visiteur). (tu as fait un echo ou tout autre chose équivalent à afficher un résultat.

header() modifie l'en-tête HTTP, soit ce qui est avant le contenu, si le contenu a commencé à être envoyé alors tu ne peux modifier ce qui était avant, d'où le message d'erreur.

------------------------------ 20minutes.fr, l'information en continu.
Répondre à SiM07

Merci pour la réponse rapide, et certainement précise, mais je ne connais pas trop le php, et la fonction header() je ne voit pas ou elle ce situe, sauf si vous parlais de la balise html <head>.

Pour le problème je le comprends en gros je lui demande de modifié quelque chose déjà envoyé, c'est sur ça marche pas !

Je suis un noob en programmation de site surtout en PHP. Juste me dire ou l'erreur se situe dans les fichiers, car je ne voit pas l'appel de la fonction header().

Merci d'avance pour la réponse et excusez-moi de ma non-connaissances !!

Répondre à NipaL

je pense que ça n'est pas peut etre pas un appel à la fonction header pourtant récurrente mais l'utilisation de cookie ici : setcookie($cookie_admin, $user[0]); ligne 44
les cookies transite par en tetes http et tu dois avoir un quelconque affichage avant cette ligne.
vérifie que tu n'est pas de code html ou de echo ou des espaces avant l'ouverture de ta balise <?php en haut de page

Répondre à mcpherson

Dans le fichier theme.php en haut il y a ça :

Citation :

<?php
function top()
{
global $nuked, $op, $file, $user,$language, $bgcolor2, $page, $bgcolor1, $color1;
include("themes/best_fire/blocks/config.php" );
?>



Mais aucun espace avant et aucun code ni echo.

J'aimerais comprendre ce qu'un espace avant le "<?php" ferrait ?

Je sais que c'est le fichier "theme.php" car j'ai repris l'ancienne version du fichier et cela fonctionne normalement .

Merci pour les réponses, et pour votre aide.

Répondre à NipaL
Meilleure réponse

et bien en fait, lorsque tu met des espaces ou du code html ou un quelquonque truc qui provoque un affichage, les entètes http ont déja été envoyé au serveur, c'est une spécificité du protocole http. or l'utilisation de cookie ou de la fonction header transmet des informations qui doivent etre contenu dans les ent tetes.
Si tu fais par exemple header après avoir fais du html avant, les en tètes ont été envoyé et par cette fonction tu essaie de les modifier pour les renvoyer ce qui est impossible.
pour ton problème, je ne comprend pas en fait à quoi sert ton theme.php, je ne vois pas où tu t'en sers après.
où utilise tu ce fichier?
si tu l'utilise avant les setCookie le problme vient de la puisque ton theme.php contient pleins de html ce qui inclue donc que les en tètes partent avant que tu fasse appel à cookie.
j'espère etre à peu près clair

Répondre à mcpherson

tu es sur que tu n'as pas un saut de ligne en haut de theme.php ou un espace avtn la balise <?php??

Répondre à mcpherson

montre le contenu de ta fonction :
redirect($url, 2);

------------------------------ Mac OS X, Feisty fawn, winXP
http://jonathanschmidt.fr
Répondre à sparrowix

Ca peut aussi être en fin de fichier, après le ?>

------------------------------ 20minutes.fr, l'information en continu.
Répondre à SiM07

c'est vrai il faut se méfier de "Warning: Cannot modify header information - headers already sent by (output started at /home/bdgclan/www/themes/best_fire/theme.php:1) in /home/bdgclan/www/modules/Admin/login.php on line 45",
apparemment c'est ligne 1 de theme.php mais des fois on trouve l'erreur en plein milieu

Répondre à mcpherson

Le problème est réglé, j'ai pris l'ancienne version du fichier et je l'ai modifié, jusqu'à ne voir aucune différence, ou presque entre les deux fichiers, bizarre.

La seul différence qui pourrait expliquer cette erreur c'est le format du fichier.

En effet l'ancienne version était traité en format ANSI alors que celui qui posait problème en UTF-8.

J'ai observer la façon dont les saut de lignes sont traité, et ce n'est pas fait de la même manière donc il est possible qu'il y avait effectivement des espaces un peut partout mais invisible car le format n'indiquai rien comme espaces !!

Je savais que certaine personne ont ce même problème mais je n'avais jamais trouver cette explication avant.

En tout cas merci à tous ceux qui ont pris le temps de ce pencher sur mon sujet.

Si vous avez une explication concrète je la veut bien.

Répondre à NipaL
Tom's Guide > Forum > Programmation > [Résolu] Erreur php : Warning: Cannot modify header information
Aller à :

Il y a 519 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Liens