[PHP] Problème headers already sent by

Résolu
gautordi0101 Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   -  
gautordi0101 Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   -
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

avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Il ne doit pas y avoir de texte sortant avant l'appel à la fonction header().
1
gautordi0101 Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
Oui, je sais, mais je n'ai aucune fonction echo avant l'header ici...
0
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
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.
0
gautordi0101 Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
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 ... ?> ...
0
avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
Si ce script est placé en-dehors de <?php ... ?> avant la fonction header(), alors c'est ça qui pose problème
0
gautordi0101 Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
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 :) !
0