[PHP] Problème headers already sent by [Résolu/Fermé]

Signaler
Messages postés
20
Date d'inscription
dimanche 18 avril 2010
Statut
Membre
Dernière intervention
8 septembre 2010
-
Messages postés
20
Date d'inscription
dimanche 18 avril 2010
Statut
Membre
Dernière intervention
8 septembre 2010
-
Bonjour à tous,

J'ai un problème avec un script PHP et je ne comprends pas d'où vient l'erreur...

Voici le code d'erreur retourné par PHP :
Warning: Cannot modify header information - headers already sent by (output started at F:\Server\www\PHP\site_test\v2\overall_header.php:300) in F:\Server\www\PHP\site_test\v2\profile.php on line 23  


Voici le bout du code où est située l'erreur (fichier profile.php ; lignes 4 à 28) :
if(!empty($_GET["id"])) {  
  $get_id = htmlspecialchars($_GET["id"]);  
  mysql_connect("".$db_server."", "".$db_username."", "".$db_passwd."");  
  mysql_select_db("".$db_database."");  
  $query_identify = mysql_query("SELECT * FROM ".$db_tables_prefix."userdata WHERE user_id='".$get_id."'") or die ("<p>Erreur SQL générale.<br />Contactez l'administrateur du site ou du serveur.</p>");  
  if (mysql_num_rows($query_identify) != 1) {  
   header ("Location: error.php?user_unknown");  
  }  
  $db_reply = mysql_query("SELECT * FROM ".$db_tables_prefix."userdata WHERE user_name = '".$_COOKIE["".$cookie_name.""]."'") or die ("<p>Erreur SQL générale.<br />Contactez l'administrateur du site ou du serveur.</p>");  
  while ($data = mysql_fetch_array($db_reply))  
  {  
   $user_logged_id = $data['user_id'];  
  }  
  $db_reply2 = mysql_query("SELECT * FROM ".$db_tables_prefix."userdata WHERE user_id = '".$get_id."'") or die ("<p>Erreur SQL générale.<br />Contactez l'administrateur du site ou du serveur.</p>");  
  while ($data2 = mysql_fetch_array($db_reply2))  
  {  
   $user_id = $data2['user_id'];  
   $account_status = $data2['account_status'];  
   if($user_logged_id == $user_id) {  
    header ("Location: my_profile.php"); //ligne 23 ! 
   }  
   if($account_status != 1) {  
    header ("Location: error.php?user_unavailable");  
   }  
  }
...  


Merci à tous ceux qui trouveraient une solution ;D



1 réponse

Messages postés
18443
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
27 septembre 2020
4 216
Il ne doit pas y avoir de texte sortant avant l'appel à la fonction header().
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60769 internautes nous ont dit merci ce mois-ci

Messages postés
20
Date d'inscription
dimanche 18 avril 2010
Statut
Membre
Dernière intervention
8 septembre 2010

Oui, je sais, mais je n'ai aucune fonction echo avant l'header ici...
Messages postés
18443
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
27 septembre 2020
4 216
Alors peut-être qu'il y a du texte en-dehors de "<?php ... ?>".
Si tu es en UTF-8, vérifie qu'il n'y ait pas le BOM.
Messages postés
20
Date d'inscription
dimanche 18 avril 2010
Statut
Membre
Dernière intervention
8 septembre 2010

Ben, je ne sais pas si ça peut être ça, mais j'ai un script js et c'est PHP via un $_SERVER["script_name"] qui détermine quel script charger (dans le fichier overall_header.php) :

<?php
	if (stristr($_SERVER["SCRIPT_NAME"], "my_profile.php")) {
		if(empty($_GET["view"])) {
?>
<script type="text/javascript">
function ajax()
{
obj = document.getElementById("earlier_msg");
obj.innerHTML = "";
if(window.XMLHttpRequest) // FIREFOX
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // IE
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else
return(false);

xhr_object.onreadystatechange = function()
{ 
if(xhr_object.readyState == 4)
{
if(xhr_object.status == 200) 
obj.innerHTML += "" + xhr_object.responseText; 
else 
obj.innerHTML += "Erreur &mdash; " + xhr_object.status;
}
}; 

xhr_object.open("GET", "ajax.php?query=my_profile", true);
xhr_object.send(null);
}
</script>
<?php
		}
		else {
			if($_GET["view"] == "other_msg") {
?>
<script type="text/javascript">
function ajax()
{
obj = document.getElementById("earlier_msg");
obj.innerHTML = "";
if(window.XMLHttpRequest) // FIREFOX
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // IE
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else
return(false);

xhr_object.onreadystatechange = function()
{ 
if(xhr_object.readyState == 4)
{
if(xhr_object.status == 200) 
obj.innerHTML += "" + xhr_object.responseText; 
else 
obj.innerHTML += "Erreur &mdash; " + xhr_object.status;
}
}; 

xhr_object.open("GET", "ajax.php?query=my_msg", true);
xhr_object.send(null);
}
</script>
<?php
			}
		}
	}
	if (stristr($_SERVER["SCRIPT_NAME"], "profile.php")) {
		if(empty($_GET["view"])) {
			if(isset($_GET["id"])) {
				$get_user_id = htmlspecialchars($_GET["id"]);
?>
<script type="text/javascript">
function ajax()
{
obj = document.getElementById("earlier_msg");
obj.innerHTML = "";
if(window.XMLHttpRequest) // FIREFOX
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // IE
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else
return(false);

xhr_object.onreadystatechange = function()
{ 
if(xhr_object.readyState == 4)
{
if(xhr_object.status == 200) 
obj.innerHTML += "" + xhr_object.responseText; 
else 
obj.innerHTML += "Erreur &mdash; " + xhr_object.status;
}
}; 

xhr_object.open("GET", "ajax.php?query=profile&user_id=<?php echo $get_user_id; ?>", true);
xhr_object.send(null);
}
</script>
<?php
			}
		}
		else {
			if($_GET["view"] == "other_msg") {
				if(isset($_GET["id"])) {
					$get_user_id = htmlspecialchars($_GET["id"]);
?>
<script type="text/javascript">
function ajax()
{
obj = document.getElementById("earlier_msg");
obj.innerHTML = "";
if(window.XMLHttpRequest) // FIREFOX
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // IE
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else
return(false);

xhr_object.onreadystatechange = function()
{ 
if(xhr_object.readyState == 4)
{
if(xhr_object.status == 200) 
obj.innerHTML += "" + xhr_object.responseText; 
else 
obj.innerHTML += "Erreur &mdash; " + xhr_object.status;
}
}; 

xhr_object.open("GET", "ajax.php?query=msg&user_id=<?php echo $get_user_id; ?>", true);
xhr_object.send(null);
}
</script>
<?php
				}
			}
		}
	}
?>


Parce que sinon, je ne vois pas d'autre code (ou texte, qui a besoin des variables) en dehors de <?php ... ?> ...
Messages postés
18443
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
27 septembre 2020
4 216
Si ce script est placé en-dehors de <?php ... ?> avant la fonction header(), alors c'est ça qui pose problème
Messages postés
20
Date d'inscription
dimanche 18 avril 2010
Statut
Membre
Dernière intervention
8 septembre 2010

Oui, c'était bien cela qui buggait.
J'utilisais un script PHP qui analysait l'URL de la page en cours pour activer ou pas un JS...
Cela bloquait le header...
J'ai réussit à le corriger :).

Merci beaucoup à toi, avion-f16 :) !