[PHP] Warning: Cannot modify header information - headers already...

Warning: Cannot modify header information - headers already... [PHP] - PHP - Programmation

Marsh Posté le 18-12-2008 à 19:21:58    

Bonjour a tous.
 
Je viens d'uploadé mon site sur olympe-network, et depuis, alors que tout fonctionne bien en local, j'ai ce message d'erreur:
Warning: Cannot modify header information - headers already sent by ...
 
J'ai regardé sur google, généralement, c'est parcequ'il y a un blanc avant les fonction session_start et header. Or chez moi c'est pas le cas (les codes sont un peu plus bas)
Le plus bizare est que je viens de remarquer que ces caractères : s'affichent tout en haut du site...
Une idée de comment résoudre le soucis?
 
Merci d'avance
 
PS: comment on met la coloration syntaxique en php?
 
Code: page principale

Code :
  1. <?php @session_start();header('P3P: CP="CAO PSA OUR"');
  2. include("header.php" );
  3. include("appels.php" );
  4. include("fonctions.php" );
  5. if (isset($_SESSION['privilege']))
  6. {
  7. }
  8. else
  9. {
  10.     $_SESSION['privilege'] = 1;
  11. }
  12. // Recherche dans la base de donnéde  la page demandée
  13.     mysql_connect ("$serveur_nom", "$serveur_utilisateur", "$serveur_password" );
  14.     mysql_select_db ($db_core);
  15.     $affichage = mysql_query ("SELECT * FROM " . $table_pages . " WHERE id='" . $_GET['id_mysql'] . "' " );
  16.     $donnees = mysql_fetch_array($affichage);
  17.     echo mysql_error();
  18.     mysql_close();
  19. ?>
  20.  
  21.   </head>
  22.  
  23.     <body>
  24.         <div id="headerground">
  25.             <div id="header">
  26.                 <p class="droite" style="font: cambria, serif; color:#c7c7c7;">V3 beta 1.3</p>
  27.             </div>    
  28.         </div>
  29.  
  30.         <div id="background">
  31.             <div id="sidebar">
  32.                 
  33.                 <div id="sidebarheader">
  34.                 </div>
  35.                 
  36.                 <div id="sidebarcontent">
  37.                     <div class="pixel"></div>
  38.                     <?php include('sidebar.php'); ?>
  39.                     <div class="pixel"></div>
  40.                 </div>
  41.                 
  42.                 <div id="sidebarfooter">
  43.                 </div>
  44.                 
  45.             </div>
  46.             
  47.             <div id="content">            
  48.                 <div id="contentheader">
  49.                 </div>
  50.                 
  51.                 <div id="contentground">
  52.                     <div class="pixel" ></div>
  53.                                     
  54.                     <?php
  55.                     if ($_SESSION['privilege'] >= $donnees['privilege'])
  56.                     {
  57.                         if ($donnees['type'] == 'enfant')
  58.                         {
  59.                             include('upbar.php');
  60.                         }
  61.                         elseif ($donnees['type'] != 'enfant')
  62.                         {
  63.                         echo '<h1>' . $donnees['nom'] . '</h1>';
  64.                         echo $donnees['header'];
  65.                         include($donnees['chemin']);
  66.                         echo $donnees['footer'];
  67.                         }
  68.                     }
  69.                     else
  70.                     {
  71.                         echo '<p class="refus">Niveau de privilege insufisant</p>';
  72.                     }
  73.                     ?>
  74.                     
  75.                     <div class="pixel" ></div>
  76.                 </div>
  77.                 
  78.                 <div id="contentfooter">
  79.                 </div>
  80.                 
  81.             </div>
  82.         </div>
  83.  
  84.         <div id="footerground">
  85.             <div id="footer">
  86.             </div>
  87.         </div>
  88.         
  89.     </body>
  90. </html>


 
Code: header.php

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
  3.   <head>
  4.         <title><?php echo 'ParalaX\'s Web: ' . $donnees['nom']; ?></title>
  5.         <meta name = "ParalaX" http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  6.         <link rel="stylesheet" media="screen" type="text/css" title="Design" href="../../ressources/styles/style_rouge.css" />
  7.         <link rel="stylesheet" media="screen" type="text/css" title="Design" href="../../ressources/styles/style_commun.css" />
  8.         <link rel="stylesheet" media="screen" type="text/css" title="Design" href="../../ressources/styles/style_menu.css" />
  9.         <link rel="stylesheet" media="screen" type="text/css" title="Design" href="../../ressources/styles/style_lightbox.css" />
  10.         <link rel="stylesheet" media="screen" type="text/css" title="Design" href="../../ressources/styles/style_gallerie.css" />
  11.         <link rel="stylesheet" media="screen" type="text/css" title="Design" href="../../ressources/styles/style_tabs.css" />


Message édité par Matth002 le 18-12-2008 à 19:27:45
Reply

Marsh Posté le 18-12-2008 à 19:21:58   

Reply

Marsh Posté le 18-12-2008 à 19:24:29    

Alors...
D'abord, avec quel logiciel codes-tu ?
Il y a de fortes chances que ce soit un problème de BOM (cf blabla@php) qu'il faut que tu désactives lors de l'enregistrement de tes fichiers PHP
 
En ce qui concerne la coloration syntaxique, utilise la balise code=php, et /code

Reply

Marsh Posté le 18-12-2008 à 19:28:23    

Merci pour ta réponse rapide :)
 
Donc en fait j'utilise notepad++
 
Je vais donc aller voir de ce pas le truc du BOM

Reply

Marsh Posté le 18-12-2008 à 19:31:01    

Ah nickel! C'était donc ça! (falait vraiment le savoir...)
 
Par la même occasion, une idée d'où peut venir le " " résiduel?

Reply

Marsh Posté le 19-12-2008 à 12:33:39    

regarde echo mysql_error();


---------------
Recette cookeo Recette de cuisine
Reply

Marsh Posté le 20-12-2008 à 10:04:55    

Je parlais des caractères résiduel


---------------
Recette cookeo Recette de cuisine
Reply

Marsh Posté le 20-12-2008 à 17:38:51    

euh, blague à part, faire ceci :
 

Code :
  1. mysql_connect ("$serveur_nom", "$serveur_utilisateur", "$serveur_password" );


 
Ne sert à rien, pourquoi utiliser des guillemets doubles ?
 

Code :
  1. mysql_connect ($serveur_nom, $serveur_utilisateur, $serveur_password );


 
a l'avantage d'être plus simple, et plus rapide à écrire et à exécuter.
Et surtout plus logique [:petrus75]


Message édité par Profil supprimé le 20-12-2008 à 18:40:15
Reply

Marsh Posté le 20-12-2008 à 18:32:20    

Et de même :

Code :
  1. if (isset($_SESSION['privilege']))
  2. {
  3. }
  4. else
  5. {
  6.    $_SESSION['privilege'] = 1;
  7. }


:D
=

Code :
  1. if (!isset($_SESSION['privilege']))
  2. {
  3.    $_SESSION['privilege'] = 1;
  4. }


plus court, plus lisible, plus logique, enfin je crois que ça se passe de justifications :o

 

edit : et essaye de te renseigner sur le piratage par "injections SQL", et autres.

Message cité 1 fois
Message édité par theredled le 20-12-2008 à 18:34:59

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
Reply

Marsh Posté le 20-12-2008 à 18:40:27    

Matth002 a écrit :

Ah nickel! C'était donc ça! (falait vraiment le savoir...)
 
Par la même occasion, une idée d'où peut venir le " " résiduel?


Même chose, le "BOM" c'est des caractères rajoutés au début du fichier (" " => pb n°2)  
Et tu ne peux pas utiliser header() quand des caractères ont déja été affichés (par echo ou en dehors des blocs <?php ?> ) (pb n°1)
 

ionik a écrit :

Je parlais des caractères résiduel


Ah, le fameux bug du mysql_error qui génère des caractères résiduels, hmmmmm ok. Tu peux nous en dire plus [:opus dei]


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
Reply

Marsh Posté le 20-12-2008 à 18:44:10    

theredled a écrit :

Et de même :

Code :
  1. if (isset($_SESSION['privilege']))
  2. {
  3. }
  4. else
  5. {
  6.    $_SESSION['privilege'] = 1;
  7. }


:D
=

Code :
  1. if (!isset($_SESSION['privilege']))
  2. {
  3.    $_SESSION['privilege'] = 1;
  4. }


plus court, plus lisible, plus logique, enfin je crois que ça se passe de justifications :o
 
edit : et essaye de te renseigner sur le piratage par "injections SQL", et autres.


 
[:ddr555] j'avais pas vu  

Reply

Marsh Posté le 20-12-2008 à 18:44:10   

Reply

Marsh Posté le 20-12-2008 à 18:54:05    

Code :
  1. //encore plus court
  2. $_SESSION['privilege'] =   empty($_SESSION['privilege']) ?  1 : $_SESSION['privilege']  ;
  3.  
  4. //encore encore plus court,mais tellement plus crade
  5. $_SESSION['privilege'] =   max($_SESSION['privilege']  , 1 ) ;


Message édité par flo850 le 20-12-2008 à 18:57:36

---------------

Reply

Marsh Posté le 20-12-2008 à 18:58:13    

Chaque chose en son temps, une par une les notions :o


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
Reply

Marsh Posté le 20-12-2008 à 18:59:05    

tu parles pour ionick ou pour Matth002( son code est pas si moche que ça, et le coup du if foireux ressemble plus à un oubli qu'autre chose )


---------------

Reply

Marsh Posté le 20-12-2008 à 19:10:25    

flo850 a écrit :

tu parles pour ionick ou pour Matth002( son code est pas si moche que ça, et le coup du if foireux ressemble plus à un oubli qu'autre chose )


Pour Matth002, mais c'est vrai que le code est pas si moche, ya séparation métier/affichage notament.


Message édité par theredled le 20-12-2008 à 19:11:05

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed