Page 1 sur 1

(comportement bizarre)pas de Headers already sent by..... ??

Posté : 30 janv. 2010, 08:51
par niuxe
Hello tout le monde,

J'ai un truc bizarre avec ma config PHP (5.2.9-2). C'est à dire que lorsque j'utilise un echo ou un autre type d'affichage avant un header ou setcookie ou etc., je n'ai pas l'erreur attendue. (??)
<!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" lang="fr" xml:lang="fr">
	<head>
		<meta http-equiv="content-type" content="text/html;charset=iso-8859-1" />
		<title>un titre</title>
	</head>
	<body>
<?php 
error_reporting(E_ALL);
session_start();
echo "quelque chose";
setcookie("cle","valeur",3600,"/");
echo $_COOKIE["ok"];
header("location:ok.html");
Le seul message d'erreur que j'ai :
Notice: Undefined index: ok in C:\wamp\www\temporaire\header_bizare\index.php on line 14
Sinon, il me fait la redirection vers ok.html. (??) Vous avez une idée d'où cela pourrait provenir ?

Bonne journée à vous.

Re: pas de Headers already sent by..... ??

Posté : 30 janv. 2010, 16:39
par ooflorent
Tu as envoyé de l'HTML à ta sortie puis le tag <?php ne figure pas en premier dans ton fichier.

Re: pas de Headers already sent by..... ??

Posté : 30 janv. 2010, 18:02
par stealth35
ton session_start(); doit etre au tout debut du fichier

Re: pas de Headers already sent by..... ??

Posté : 30 janv. 2010, 21:11
par niuxe
[..]
C'est à dire que lorsque j'utilise un echo ou un autre type d'affichage avant un header ou setcookie ou etc., je n'ai pas l'erreur attendue. (??)
[..]
Sinon, il me fait la redirection vers ok.html. (??)
hum. :roll:

Re: (comportement bizarre)pas de Headers already sent by..... ??

Posté : 31 janv. 2010, 05:12
par Patriboom
S'il ne renvoie pas le message attendu, c'est peut-être simplement parce que le module "SESSION" n'est pas activé sur ton serveur.

Jette un oeil sur phpinfo();

Re: (comportement bizarre)pas de Headers already sent by..... ??

Posté : 31 janv. 2010, 13:33
par Ryle
Cela provient probablement du buffer php :)

Vérifie (si tu y as accès) la valeur de output_buffering dans ton php.ini.

S'il est activé, php va stocker les données que tu envois au navigateur dans un buffer temporaire avant de les envoyer réellement. Ainsi, tant que le volume des données que tu envois au visiteur ne dépasse pas la taille du buffer (cad du output_buffering), rien n'est envoyé au navigateur.

Dans ce cas, les fonctions header(), session_start() et compagnie peuvent encore être appellées même si ton script a déjà généré des écritures (puisque php retient les données à envoyer). Mais comme il s'agit d'un paramétrage du serveur, mieux vaut que ton code n'en dépendent pas et continue à ne rien afficher avant un header() :)

Re: (comportement bizarre)pas de Headers already sent by..... ??

Posté : 01 févr. 2010, 05:33
par niuxe
Hello,

Merci Ryle, c'est bien le output_buffering. Également merci pour tes petites précisions.

Bonne journée à toi et merci à tous de m'avoir aidé. ^^