Page 1 sur 2
Warning: Cannot modify header information !
Posté : 20 nov. 2012, 12:51
par xzena
Bonjour,
j'ai un souci dont j'ai essayé plusieurs solutions mais sans résultats :/
dernièrement mon site donne ce problème à l'administrateur:
Warning: Cannot modify header information - headers already sent by (output started at..... on line 44
Alors que Moi je me connecte sans aucun problème!je comprends pas pourquoi?
voilà ma page:
<?php session_start(); ?>
<?php if(isset($_SESSION['login']) && isset($_SESSION['pass'])){
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<link rel="stylesheet" href="style.css" media="screen" />
<link rel="stylesheet" href="CalendarControl.css" media="screen" />
<link rel="stylesheet" type="text/css" media="screen" href="screen.css" />
<script type="text/javascript" src="ADxMenu.js"></script>
<script src="SpryAssets/SpryMenuBar.js" type="text/javascript"></script>
<link href="SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css" />
<link href="SpryAssets/SpryMenuBarVertical.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="main_container">'
?>
<?php include("top.php");
?>
<?php include("p_gau.php");?>
<?php echo '<div class="left_box2">
<table width="598" border="0">
<tr>
<td width="77" height="196" > </td>
<td width="511">';?>
<?php require("include.php");?>
<?php echo'</td>
</tr>
</table>
</div>
</div>
</body>
</html>';
}else
{
echo "inexistants";
header('location:/basketball/index.php');
}
?>
J'essayé de commenter la dernière echo,alors il donne cet erreur :
Oups ! Petit problème... Ce lien semble brisé.
Priere de m'aider et merci d'avance.
Re: Warning: Cannot modify header information !
Posté : 20 nov. 2012, 12:57
par Saian
Problème classique. Ça m'étonne que tu n'ai pas trouvé avec une recherche du message d'erreur.
Tu dois avoir un header en ligne 44 de je ne sais pas quel fichier. Hors si tu as déjà des sorties au dessus du header ça provoque cette erreur.
Il ne doit y avoir aucune sortie avant un appel de la fonction header.
EDIT à priori ça doit être le header en bas de page qui génère l'erreur.
Pourquoi ouvres tu et fermes tu plusieurs fois les balises php alors que tu n'as aucune sortie html entre (juste des blancs). C'est ça qui provoque l'erreur (RE-EDIT c'est vrai que le echo avant le header est à jeter car il va forcément provoquer l'erreur, honte sur moi. Et comme dit Nagol n'importe quelle sortie html avant ton header provoquera également l'erreur).
Tu devrais plutôt écrire :
<?php
session_start();
if(!isset($_SESSION['login']) || !isset($_SESSION['pass'])){
header('location:/basketball/index.php');
exit();
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<link rel="stylesheet" href="style.css" media="screen" />
<link rel="stylesheet" href="CalendarControl.css" media="screen" />
<link rel="stylesheet" type="text/css" media="screen" href="screen.css" />
<script type="text/javascript" src="ADxMenu.js"></script>
<script src="SpryAssets/SpryMenuBar.js" type="text/javascript"></script>
<link href="SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css" />
<link href="SpryAssets/SpryMenuBarVertical.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="main_container">
<?php
include("top.php");
include("p_gau.php");
?>
<div class="left_box2">
<table width="598" border="0">
<tr>
<td width="77" height="196" > </td>
<td width="511">
<?php require("include.php"); ?>
</td>
</tr>
</table>
</div>
</div>
</body>
</html>
Re: Warning: Cannot modify header information !
Posté : 20 nov. 2012, 13:20
par dix2
salut,
tu ne peux pas avoir un echo avant un header
echo "inexistants";
header('location:/basketball/index.php');
il faut supprimer le : echo "inexistants";
@+
dix2
Re: Warning: Cannot modify header information !
Posté : 20 nov. 2012, 13:22
par Nagol
Comme dit plus haut un echo peut faire ça, mais un include d'un fichier qui contient un saut de ligne derrière une fermeture de balise php peut faire ça aussi, en fait tout "retour" html peut provoquer ça.
Re: Warning: Cannot modify header information !
Posté : 21 nov. 2012, 11:00
par xzena
merci pour toutes vos réponses,alors j'ai essayé le code de @Saian en commentant comme vous m'avez dit le echo'inexsisttant',Mais ça marche pas et il m'affiche cet erreur:
Oups ! Petit problème... Ce lien semble brisé.
Suggestions :
Accédez à la page :
www.monsite.ma
Rechercher
www.monsite.ma pour basketball index
Rechercher sur Google :
comment puis_je résoudre ça et se connecté sur la session admin alors

Re: Warning: Cannot modify header information !
Posté : 21 nov. 2012, 11:11
par sirakawa
Si je me fie à la doc:
http://fr2.php.net/manual/fr/function.header.php
echo "inexistants";
header('location:/basketball/index.php', TRUE);
devrait faire l'affaire
Re: Warning: Cannot modify header information !
Posté : 21 nov. 2012, 11:13
par Saian
Tu as du oublier de lire ce passage alors...
N'oubliez jamais que header() doit être appelée avant que le moindre contenu ne soit envoyé, soit par des lignes HTML habituelles dans le fichier, soit par des affichages PHP. Une erreur très classique est de lire un fichier avec include ou require, et de laisser des espaces ou des lignes vides, qui produiront un affichage avant que la fonction header() ne soit appelée. Le même problème existe avec les fichiers PHP/HTML standards.
EDIT
Je vois que tu utilises le deuxième paramètres. Jamais testé alors peut être que tu as raison désolé. ^^
RE-EDIT
Par curiosité j'ai testé un echo puis un header() avec deuxième paramètre à true et la redirection fonctionne sans provoquer d'erreur. Mais ça n'a à priori pas de rapport avec ta dernière erreur de lien brisé xzena.
Re: Warning: Cannot modify header information !
Posté : 21 nov. 2012, 11:25
par xzena
donc je vais essayé le: header('location:/basketball/index.php', TRUE); en gardant le méme code que j'ai !
j'espère ça marchera cette fois,merci
Re: Warning: Cannot modify header information !
Posté : 21 nov. 2012, 11:42
par dix2
Où vois-tu dans la doc qu'on peut envoyer des données avant un header ?
Il est justement indiqué le contraire :
N'oubliez jamais que header() doit être appelée avant que le moindre contenu ne soit envoyé, soit par des lignes HTML habituelles dans le fichier, soit par des affichages PHP.
Re: Warning: Cannot modify header information !
Posté : 21 nov. 2012, 12:03
par xzena
beh j'ai essayé au lieu du lien relatif un lien absolue:
et quand je saisi le login et mot de passe,il me demande encore de le saisir et insi de suite..:/
Re: Warning: Cannot modify header information !
Posté : 21 nov. 2012, 12:14
par xzena
le problème c'est que chez moi il existe pas ce problème,mais chez l'amdin oui il arrive pas troujours à se connecter!
je sais pas pourquoi!!il faut peut etre qu'il supprime son cache ou je sais pas??
Re: Warning: Cannot modify header information !
Posté : 21 nov. 2012, 12:24
par Berzemus
En passant, puisqu'on en parlait dans un autre sujet, tu utilises quel éditeur, Notepad++ ? Quel encodage de fichier, UTF-8 avec ou sans BOM ?
Je dis ça parce qu'un encodage UTF-8 avec BOM donne exactement ce genre de comportement inattendu (même que ça marche chez certains et pas chez d'autres)

Re: Warning: Cannot modify header information !
Posté : 21 nov. 2012, 12:28
par Saian
S'il est redirigé vers le header c'est que soit $_SESSION['login'] soit $_SESSION['pass'] soit les 2 ne sont pas définis.
Et au passage quel intérêt de garder le mot de passe dans la session ? pas top niveau sécurité.
Re: Warning: Cannot modify header information !
Posté : 21 nov. 2012, 12:30
par xzena
En passant, puisqu'on en parlait dans un autre sujet, tu utilises quel éditeur, Notepad++ ? Quel encodage de fichier, UTF-8 avec ou sans BOM ?
Je dis ça parce qu'un encodage UTF-8 avec BOM donne exactement ce genre de comportement inattendu (même que ça marche chez certains et pas chez d'autres)

oui J'ai le charset=utf-8",editeur: dreamweaver
pour le BOM,je pense ça veut dire le blanc qui se trouve entre les balises??
hmmm je pense je l'ai pas sur mon code:
<?php
session_start();
if(!isset($_SESSION['login']) || !isset($_SESSION['pass'])){
// echo "inexistants";
// header('location:/basketball/index.php');
header('location:http://www.monsite.ma/admin/index.php');
exit();
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<link rel="stylesheet" href="style.css" media="screen" />
<link rel="stylesheet" href="CalendarControl.css" media="screen" />
<link rel="stylesheet" type="text/css" media="screen" href="screen.css" />
<script type="text/javascript" src="ADxMenu.js"></script>
<script src="SpryAssets/SpryMenuBar.js" type="text/javascript"></script>
<link href="SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css" />
<link href="SpryAssets/SpryMenuBarVertical.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="main_container">
<?php
include("top.php");
include("p_gau.php");
?>
<div class="left_box2">
<table width="598" border="0">
<tr>
<td width="77" height="196" > </td>
<td width="511">
<?php require("include.php"); ?>
</td>
</tr>
</table>
</div>
</div>
</body>
</html>
Re: Warning: Cannot modify header information !
Posté : 21 nov. 2012, 12:36
par Mazarini
Peut être que tu n'alimentes pas tes 2 variables de sessions ?