Tom's Guide > Forum > Programmation > Probleme de code php
Mot :    Pseudo :           
 

Bonjour je suis en train de faire un petit site avec un forum mais le probleme c'est que quand je veux poster une réponse il m'affiche ceci :
Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\progplanet\c\insert_reponse.php:13) in c:\program files\easyphp1-8\www\progplanet\c\insert_reponse.php on line 100

Je ne comprend pas comment éfacer cette erreur car elle est créée à cause de la session et du header je crois.
Voici le code :

Code :
  1. <?php
  2. session_start();
  3. ?>
  4. <html>
  5. <body bgcolor="ffffff" text="000000" link="000000" vlink="800080" alink="ff0000">
  6. <div align="center"><table border="0" summary="">
  7.     <tr>
  8.         <td width="187" rowspan="3"><table border="1" bgcolor="BLACK">
  9.     <tr>
  10.         <td style="border: none; text-align: center; background: url(../images/fontmenu1.png)"><u><b>MENU</b></u></td>
  11.     </tr>
  12.     <tr>
  13.         <td style="border: none; background: url(../images/fontmenu2.png)">FLASH</td>
  14.     </tr>
  15.     <tr>
  16.         <td style="border: none; background: url(../images/fontmenu2.png)">HTML</td>
  17.     </tr>
  18.     <tr>
  19.         <td style="border: none; background: url(../images/fontmenu2.png)">PHP</td>
  20.     </tr>
  21.     <tr>
  22.         <td style="border: none; background: url(../images/fontmenu2.png)"><a href="index.php">C/C++</a></td>
  23.     </tr>
  24.     <tr>
  25.         <td style="border: none; background: url(../images/fontmenu2.png)">VB</td>
  26.     </tr>
  27.     <tr>
  28.         <td style="border: none; background: url(../images/fontmenu2.png)">JAVA</td>
  29.     </tr>
  30.     <tr>
  31.         <td style="border: none; background: url(../images/fontmenu2.png)">DELPHI</td>
  32.     </tr>
  33.     <tr>
  34.         <td style="border: none; background: url(../images/fontmenu2.png)">BASIC</td>
  35.     </tr>
  36.     <tr>
  37.         <td style="border: none; background: url(../images/fontmenu2.png)">Ajouter catégorie</td>
  38.     </tr>
  39.     <tr>
  40.         <td style="border: none; background: url(../images/fontmenu2.png)"><a href="../dons.php">Faire un don</a></td>
  41.     </tr>
  42. </table></td>
  43.         <td style="background: url(../images/font.png)" height="80">
  44.         <b>Les demandes d'aide en C/C++</b><br>
  45.         <a href="index.php">Retour</a>
  46. </td>
  47.         <td rowspan="3">
  48.         <table border="1" cellpadding="0" cellspacing="0" bordercolor="#000000" summary="" width="100" height="300">
  49.     <tr>
  50.         <td>pub</td>
  51.     </tr>
  52. </table></td>
  53.     </tr>
  54.     <tr>
  55.     <td width="500" bgcolor="white" style="background: url(../images/font.png)">
  56. <?php
  57. if (!isset($_SESSION['login'])) {
  58.  
  59.     header ('Location: ../index.php');
  60.     exit();
  61. }
  62. // on teste si le formulaire a été soumis
  63. if (isset ($_POST['go']) && $_POST['go']=='Poster') {
  64.     // on teste le contenu de la variable $auteur
  65.     if (!isset($_POST['message']) || !isset($_GET['numero_du_sujet'])) {
  66.         $erreur = 'Les variables nécessaires au script ne sont pas définies.';
  67.     }
  68.     else {
  69.         if (empty($_POST['message']) || empty($_GET['numero_du_sujet'])) {
  70.             $erreur = 'Au moins un des champs est vide.';
  71.         }
  72.         // si tout est bon, on peut commencer l'insertion dans la base
  73.         else {
  74.             // on se connecte à notre base de données
  75.             $base = mysql_connect ('serveur', 'login', 'mdp');
  76.             mysql_select_db ('mysql', $base) ;
  77.             // on recupere la date de l'instant présent
  78.             $date = date("Y-m-d H:i:s" );
  79.             // préparation de la requête d'insertion (table forum_reponses)
  80.             $sql = 'INSERT INTO forumc_reponses VALUES("", "'.addslashes($_SESSION['login']).'", "'.addslashes($_POST['message']).'", "'.$date.'", "'.$_GET['numero_du_sujet'].'" )';
  81.             // on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
  82.             mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
  83.             // préparation de la requête de modification de la date de la dernière réponse postée (dans la table forum_sujets)
  84.             $sql = 'UPDATE forumc_sujets SET date_derniere_reponse="'.$date.'" WHERE id="'.$_GET['numero_du_sujet'].'"';
  85.             // on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
  86.             mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
  87.             // on ferme la connexion à la base de données
  88.             mysql_close();
  89.             // on redirige vers la page de lecture du sujet en cours
  90.             header('Location: lire_sujet.php?id_sujet_a_lire='.$_GET['numero_du_sujet']);
  91.             // on termine le script courant
  92.             exit;
  93.         }
  94.     }
  95. }
  96. ?>
  97. <!-- on fait pointer le formulaire vers la page traitant les données -->
  98. <form action="insert_reponse.php?numero_du_sujet=<?php echo $_GET['numero_du_sujet']; ?>" method="post">
  99. <table>
  100. <tr><td>
  101. <span class="gras">Message :</span>
  102. </td><td>
  103. <textarea name="message" cols="50" rows="10"><?php if (isset($_POST['message'])) echo stripslashes(htmlentities(trim($_POST['message']))); ?></textarea>
  104. </td></tr><tr><td><td align="right">
  105. <input type="submit" name="go" value="Poster">   
  106. </td></tr></table>
  107. </form>
  108. <?php
  109. if (isset($erreur)) echo '<br /><br />',$erreur;
  110. ?>
  111. </td>
  112.     </tr>
  113.     <tr>
  114.         <td bgcolor="#CCFFFF" style="background: url(../images/font.png); text-align: center"><font size="3" color="#4169e1"><b><tt>By Nicolas Cognaux</tt></b></font></td>
  115.     </tr>
  116. </table>
  117. </div>
  118. </body>
  119. </html>



Voila merci d'avance

Nicolas

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

ce genre d'erreur apparait lorsque tu essaies d'afficher qqchose avant le session start.

vérifie que tu n'affiche rien avant.

------------------------------ Don't panic!
mouths91 à dit : "[...]des rageux comme kelnem"
Répondre à Vinz42

qu'est ce que tu veux dire?

Répondre à NCX-design

tu utilises la fonction header() alors que tu as déjà envoyé du code.
http://php.benscom.com/manual/fr/function.header.php

Citation :


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 affichges 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 génèreront un affichage avant que la fonction header() ne soit appelée. Le même problème existe avec les fichiers PHP/HTML standards.

Répondre à coca25

Comment eviter ce probleme alors?
Si j'ai bien compris je dois mettre tout les codes php avant le html?
Merci d'avance

Nicolas

Répondre à NCX-design

Moi c'est ce que je fait gènèralement!

Répondre à a75b015

ben si dans ton algorithme tu dois changer de page, je vois pas l'interet d'afficher des trucs avant donc 2 solutions:
tu reagences tes if de tel facons que le header vient en premier
ou tu choisis une autre facon de faire la redirection

Répondre à coca25

En fait c'est un systeme de forum et c'est pour poster un message mais si l'utilisateur ne s'est pas connecté donc si $_SESSION['login'] est vide il doit r'envoyer l'utilisateur à la page d'accueil.

Répondre à NCX-design
Tom's Guide > Forum > Programmation > Probleme de code php
Aller à :

Il y a 2195 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens