Problème headers
Merlin62
Messages postés
9
Statut
Membre
-
Merlin62 Messages postés 9 Statut Membre -
Merlin62 Messages postés 9 Statut Membre -
Bonjour,
Je sais que vous êtes déjà en train de vous dire encore un problème de headers et il n'a pas lu les post précédents!
Et bien si et j'ai fait tout ce qui était dit dans les post mais rien n'y fait!
Donc j'ai ce fameux message :
J'ai vérifié qu'il n'y avait pas de parasite, je l'ai encodé en ANSI, en utf-8, utf-8 sans BOM et à chaque fois la même erreur
Je l'ai écrit avec et sans espace, avec et sans saut de ligne, collé à <?php et pas collé à <?php et là pareil rien ne change...
Voici le début mon code:
main.php, page principale et stock est la page appelée dans main.php.
Ma page main.php est faites sous avec des <div>, c'est d'ailleurs depuis que j'ai mis des <div> à la place d'un tableau que j'ai ce problème...
Merci
Je sais que vous êtes déjà en train de vous dire encore un problème de headers et il n'a pas lu les post précédents!
Et bien si et j'ai fait tout ce qui était dit dans les post mais rien n'y fait!
Donc j'ai ce fameux message :
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\...\main.php:184) in C:\...\stock.php on line 2 Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\...\main.php:184) in C:\...\stock.php on line 2
J'ai vérifié qu'il n'y avait pas de parasite, je l'ai encodé en ANSI, en utf-8, utf-8 sans BOM et à chaque fois la même erreur
Je l'ai écrit avec et sans espace, avec et sans saut de ligne, collé à <?php et pas collé à <?php et là pareil rien ne change...
Voici le début mon code:
<?php
session_start();
if (isset($_SESSION['connect']))//On vérifie que le variable existe
{
$connect=$_SESSION['connect'];
$nom_contact=$_SESSION['nom'];
$prenom_contact=$_SESSION['prenom'];//On récupère la valeur de la variable de session
}
else
{
$connect=0;//Si $_SESSION['connect'] n'existe pas, on donne la valeur "0"
}
if ($connect == "1") // Si le visiteur s'est identifié
{// On affiche la page cachée.
?>
main.php, page principale et stock est la page appelée dans main.php.
Ma page main.php est faites sous avec des <div>, c'est d'ailleurs depuis que j'ai mis des <div> à la place d'un tableau que j'ai ce problème...
Merci
17 réponses
Bonjour
Le code que tu montres et bien celui de stock.php;, non ?
Or tu as déjà envoyé quelque chose à la ligne 184 du fichier main.php, c'est écrit en clair dans le message.
Peux-tu montrer le code de main.php, avec ta ligne 184 qui envoie quelque chose et on include stock.php qui vient après ?
Et il ne faut surtout pas cacher les erreurs avec @, il faut les corriger quand elles viennent de toi comme c'est le cas ici.
Le code que tu montres et bien celui de stock.php;, non ?
Or tu as déjà envoyé quelque chose à la ligne 184 du fichier main.php, c'est écrit en clair dans le message.
Peux-tu montrer le code de main.php, avec ta ligne 184 qui envoie quelque chose et on include stock.php qui vient après ?
Et il ne faut surtout pas cacher les erreurs avec @, il faut les corriger quand elles viennent de toi comme c'est le cas ici.
Salut ,
ce ne sont que des warning, probablement parce qu'il a redéclaré plusieurs session_start.
Dans la logique c'est vrai que c'est mieu de corriger le probleme, mais bon...
ce ne sont que des warning, probablement parce qu'il a redéclaré plusieurs session_start.
Dans la logique c'est vrai que c'est mieu de corriger le probleme, mais bon...
S'il y a plusieurs session_start, il faut supprimer ceux qui ne servent à rien, ça n'est pas plus compliqué que de mettre un @ devant. S'il n'y en a qu'un, ses sessions ne marcheront jamais comme ça.
"Une erreur que tu ne comprends pas ? Cache-la !" me semble être le pire conseil à donner à quelqu'un qui essaye de comprendre.
"Une erreur que tu ne comprends pas ? Cache-la !" me semble être le pire conseil à donner à quelqu'un qui essaye de comprendre.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Re,
Si tu peut acceder a ta page, en "l'incluant" ou directement, la il te faut bien un session_start sur les deux, et la tu aura l'erreur.
Tu a raison, j'aurais peut etre du commencer par expliquer pk mettre un @ et a quoi ca sert.
Si tu peut acceder a ta page, en "l'incluant" ou directement, la il te faut bien un session_start sur les deux, et la tu aura l'erreur.
Tu a raison, j'aurais peut etre du commencer par expliquer pk mettre un @ et a quoi ca sert.
Bonjour,
Tout d'abord merci pour vos réponse rapides!^^
Le code que je montre est bien celui de stock.php
Il n'y a qu'un seul session_start dans toute la page.
Je veux bien vous montrer la ligne 184 de main.php mais c'est une ligne qui appartient à une fonction menu, c'est la fonction qui permet d'afficher mon menu.
Je vous mets la fonction entière du coup:
Voilà
Tout d'abord merci pour vos réponse rapides!^^
Le code que je montre est bien celui de stock.php
Il n'y a qu'un seul session_start dans toute la page.
Je veux bien vous montrer la ligne 184 de main.php mais c'est une ligne qui appartient à une fonction menu, c'est la fonction qui permet d'afficher mon menu.
Je vous mets la fonction entière du coup:
function menu()
{
global $menu_cli;
global $smenu_cli;
global $menu_so;
global $smenu_so;
global $menu_pro;
global $smenu_pro;
$i=0;$k=0;$m=0;
echo "<table>
<tr>
<th align=left bgcolor='#A1011D'>
<a href='accueil.php'>
Accueil
</a>
</th>
</tr>";
while ($menu_so[$i][0]!="end-menu_so")
{
echo "<tr>
<th>"
. $menu_so[$i][0] .
"</th>
</tr>";
$j=0;
while ($smenu_so[$i][$j][0]!="end-menu_so")
{
echo"<tr>";
echo "<td onmouseout=\"this.style.background='#E6EBEE';\" onmouseover=\"this.style.background='#A1011D';\" bgcolor='#E6EBEE'>
<a onmouseout=\"this.style.color='#0D3D6D';\" onmouseover=\"this.style.color='white';\" href='main.php?page=". $smenu_so[$i][$j][1] . "'>"
. $smenu_so[$i][$j++][0] .
"</a>
</td>";
echo"</tr>";
}
$i++;
}
while ($menu_pro[$k][0]!="end-menu_pro")
{
echo"<tr>";
echo"<th align=left bgcolor='#A1011D' style='font-size: small;padding: 2px 0px 2px 2px;'>" . $menu_pro[$k][0] . "</th></tr>";
$l=0;
while ($smenu_pro[$k][$l][0]!="end-menu_pro")
{
echo"<tr>";
echo "<td onmouseout=\"this.style.background='#E6EBEE';\" onmouseover=\"this.style.background='#A1011D';\" bgcolor='#E6EBEE'>
<a onmouseout=\"this.style.color='#0D3D6D';\" onmouseover=\"this.style.color='white';\" href='main.php?page=". $smenu_pro[$k][$l][1] . "'>"
. $smenu_pro[$k][$l++][0] .
"</a>
</td>"; //---> LIGNE 184
echo"</tr>";
}
$k++;
}
while ($menu_cli[$m][0]!="end-menu_cli")
{
echo"<tr><th align=left bgcolor='#A1011D' style='font-size: small;padding: 2px 0px 2px 2px;'>" . $menu_cli[$m][0] . "</th></tr>";
$n=0;
while ($smenu_cli[$m][$n][0]!="end-menu_cli")
{
echo"<tr>";
echo "<td bgcolor='#E6EBEE' onmouseout=\"this.style.background='#E6EBEE';\" onmouseover=\"this.style.background='#A1011D';\"><a onmouseout=\"this.style.color='#0D3D6D';\" onmouseover=\"this.style.color='white';\" href='main.php?page=" . $smenu_cli[$m][$n][1] . "'>" . $smenu_cli[$m][$n++][0] . "</a></td>";
echo"</tr>";
}
$m++;
}echo "</table>";
};
Voilà
Désolé, un oubli.
Oui oui elle est bien après
$tampon vérifie l'extension du fichier
$pageinclude est le chemin du fichier à afficher donc ici stock.php
Oui oui elle est bien après
<div id="navigation">
<?php menu();?>
</div><!-- #navigation -->
<div id="contenu">
<?php if ($tampon[1]!="php")
{
echo $body;
}
else
{
include $pageInclude;
} ?>
</div><!-- #contenu -->
$tampon vérifie l'extension du fichier
$pageinclude est le chemin du fichier à afficher donc ici stock.php
Donc tu fais exactement ce qui est interdit comme expliqué dans tous les posts que tu as lus ;)
Quand tu appelles la fonction menu, tu envoies des chose à afficher au client (<table><tr> etc..)
Puis, PLUS TARD, tu appelles le session_start(), mais là c'est interdit.
Ça n'est pas interdit pour le plaisir d'embêter le monde, mais parce que les sessions (comme les cookies, les redirections avec Location: etc....) sont dans les en-têtes du protocole HTTP ( rien à voir avec <header> html) et que les en-têtes doivent être envoyées avant les données.
Une seule solution : enlever le session_start d'où il est pour le remettre AVANT tout envoi de données au client.
Au passage, c'est curieux que ta page commence par <table>. Tu devrais au moins avoir la structure<html> avec header et body..
Quand tu appelles la fonction menu, tu envoies des chose à afficher au client (<table><tr> etc..)
Puis, PLUS TARD, tu appelles le session_start(), mais là c'est interdit.
Ça n'est pas interdit pour le plaisir d'embêter le monde, mais parce que les sessions (comme les cookies, les redirections avec Location: etc....) sont dans les en-têtes du protocole HTTP ( rien à voir avec <header> html) et que les en-têtes doivent être envoyées avant les données.
Une seule solution : enlever le session_start d'où il est pour le remettre AVANT tout envoi de données au client.
Au passage, c'est curieux que ta page commence par <table>. Tu devrais au moins avoir la structure<html> avec header et body..
Non elle ne commence pas par table, je t'ai juste mis les lignes concernées^^
Ce que je ne comprends pas c'est qu'au début ma page main.php était faite sur une base de tableau, mais je me suis rendu compte que ça ne passait pas avec IE donc c'est là que j'ai vu qu'il fallait passer par des <div>.
Donc c'est ce que j'ai fait, et c'est depuis ce temps que j'ai ce problème, avant tout fonctionnait très bien...
Comment ça se fait? T'as une idée?
Ce que je ne comprends pas c'est qu'au début ma page main.php était faite sur une base de tableau, mais je me suis rendu compte que ça ne passait pas avec IE donc c'est là que j'ai vu qu'il fallait passer par des <div>.
Donc c'est ce que j'ai fait, et c'est depuis ce temps que j'ai ce problème, avant tout fonctionnait très bien...
Comment ça se fait? T'as une idée?
Non, je n'ai pas d'idée. Il doit y avoir autre chose que tu as touché aussi, et je ne peux pas te dire quoi sans avoir l'ancien code à côté du nouveau.
Ce qui a changé c'est qu'à la place des balises <table> c'est des <div> donc qui fonctionne avec des feuilles de styles appelées dans le <head>, donc au début je pensais que c'était dû à ça sans grande conviction et sans connaissances assez grandes.
Tu a bien mit le session_start tout en haut de ta page avant meme la balise html ?
et sinon avec un @ ca donne koi ?
et sinon avec un @ ca donne koi ?