[Resolu]Header already sent : Je ne trouve pas malgré mes recherches

Header already sent : Je ne trouve pas malgré mes recherches [Resolu] - PHP - Programmation

Marsh Posté le 21-07-2005 à 21:38:31    

Bonjour à tous
 
Je précise que je poste ici après avoir longuement cherché sur le net et avoir fouillé dans mon code
 
Donc ma premiere question vient de ma constatation que je ne comprend pas.
Tout d'abors avant de mettre en ligne je developpe en local bonne ou mauvaise habitude (je sais pas) mais je fais toujours comme ca. Une fois que cela fonctionne je met en ligne.
Le souci est que la j'ai developper un système de logg utilisateur avec session. En local tout fonctionne j'ai up sur un espace perso FREE cela ne fonctionne plus. Quand je dis fonctionne plus je parle de problème de Header , de size exeeded etc...
Donc pourquoi une tel difference entre local et internet (local = easy php 1.7)
DOnc
Après quelques recherche j'ai vu qu'il fallait créer un répertoire "sessions" sous la racine du site. JE le fais et HAaaaa déjà c'est mieu une grand nombre de message d'erreur ont disparue. Mais il en reste encore. Je cherche encore un peu et je vois qu'il faut pas de code d'affichage avant le header (donc pas d'echo ni de Html) je fouille les codes je modifie quelque petit chose et l'affichage est niquel. Content cela a ete laborieux mais plus de message.
 
Trop bo pour etre vrai j'essai de me logger et lors de la redirection après avoir ete accepter (redirection vers l'index) il me met encore ce message de header already sent. Je fouille je fouille mais la je ne trouve plus.
 
http://img315.imageshack.us/img315/5629/page4ar.jpg
 
Et pour le code de la page identification.php
 

Code :
  1. <?
  2. // Définition de la connexion à la base donné
  3. require("include/connection-inc.php" );
  4.  if (isset($_POST['pseudo'])){ // execution apres envoi du formulaire
  5.  $pseudo = $_POST['pseudo']; // mise en variable du nom d'utilisateur
  6.  $password = MD5($_POST['password']); // mise en variable du mot de passe crypté
  7. // requete sur la table Utilisateur (on récupère les infos de la personne)
  8. mysql_select_db($sql_bdd, $db_link);
  9. $verif_query=sprintf("SELECT * FROM xperience_users WHERE pseudo like '$pseudo' AND password like '$password'" ); // requête sur la base administrateurs
  10. $verif = mysql_query($verif_query, $db_link) or die(mysql_error());
  11. $row_verif = mysql_fetch_assoc($verif);
  12. $user = mysql_num_rows($verif); //retourne le nombre de rang à partir du résultat  
  13. if ($user) { // On test s'il y a un utilisateur correspondant
  14.     session_register("authentification" ); // enregistrement de la session  
  15.  // déclaration des variables de session
  16.  $_SESSION['admin'] = $row_verif['admin'];
  17.  $_SESSION['nom'] = $row_verif['nom'];
  18.  $_SESSION['prenom'] = $row_verif['prenom'];
  19.  $_SESSION['pseudo'] = $row_verif['pseudo'];
  20.  $_SESSION['password'] = $row_verif['password'];
  21. header("Location:index.php?" ); // redirection si OK
  22. }
  23. else {
  24. header("Location:index.php?erreur=login" ); // redirection si utilisateur non reconnu
  25. }
  26. }
  27. ?>
  28. <Body>
  29. <form action="" method="post" name="auth">
  30.        <a> Login </a><br>
  31.          <input type="text" name="pseudo"  size="15" id="pseudo"><br>
  32. <a> Password </a><br>
  33.          <input type="password"name="password"  size="15" id="password"><br>
  34.          <input type="submit" name="Submit"  value="Valider"><br>
  35. </FORM>
  36. </body>


 
Et le debut de Index
 

Code :
  1. <?php
  2. session_start();
  3. if (session_is_registered("authentification" )){ // vérification sur la session authentification (la session est elle enregistrée ?)
  4. // ici les éventuelles actions en cas de réussite de la connexion
  5. echo '<a href="chat/index.php"> Dialoguer en direct </a>';
  6. }
  7. // Définition de la feuille de style
  8. echo '<link href="fiblack3d.css" rel="stylesheet" type="text/css">';
  9. // Définition de la connexion à la base donné
  10. require("include/connection-inc.php" );
  11. include("include/header.php" );
  12. ?>
  13. // gestion des erreurs lors de l'authentification
  14. <?php if(isset($_GET['erreur']) && ($_GET['erreur'] == "login" )) { ?>
  15. <script langage = "javascript">alert("Nom d'utilisateur ou mot de passe incorrect" );</script>  <? } ?>
  16. <?php if(isset($_GET['erreur']) && ($_GET['erreur'] == "delog" )) { // Affiche l'erreur ?>
  17. <script langage = "javascript">alert("Déconnexion réussie" );</script>  <?php } ?>
  18. <?php if(isset($_GET['erreur']) && ($_GET['erreur'] == "intru" )) { // Affiche l'erreur ?>
  19. <script langage = "javascript">alert("Echec d'authentification aucune session n'est ouverte. Ou vous n'avez pas les droits pour afficher cette page" );</script>  <?php } ?>
  20. ...
  21. ...
  22. Le reste n'est que table td et tr
  23. ...
  24. ...


 
J'ai d'autre erreur semblable dans d'autre partie du site genre la redirection après s'être inscrit mais bon si deja on résout celle ci peut etre que j'arriverais à me debrouillé après.
 
Merci d'avance


Message édité par hyptnos le 25-07-2005 à 19:39:00
Reply

Marsh Posté le 21-07-2005 à 21:38:31   

Reply

Marsh Posté le 21-07-2005 à 21:59:05    

Ca m'étonnerait que t'ais bien cherché sur ce même forum, mais bon, bref.
 
Il ne doit y avoir aucun HTML avant header(), même pas un espace avant le premier <?php.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 21-07-2005 à 22:02:13    

Bas oui c'est que j'ai di mais il n'y a que la tabulation d'avant le header de la ligne 29
Or j'ai essayé de le supprimé et cela fait la meme chose
si tu vois ce dit espace merci de me l'indiqué  
Merci

Reply

Marsh Posté le 21-07-2005 à 22:05:55    

Désolé, j'avais lu ton post en verticale.
 
Ce que t'as collé pour identification.php, c'est exactement le contenu de ton fichier, ni +, ni - ?
 
Dans include/connection-inc.php, aucun html ?


Message édité par sielfried le 21-07-2005 à 22:06:33

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 21-07-2005 à 22:06:49    

Oui c'est vraiment un copier coller de ce qu'il y actuellement
et y a pas de mal ^^

Reply

Marsh Posté le 21-07-2005 à 22:12:39    

Fait voir include/connection-inc.php


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 21-07-2005 à 22:15:28    

Code :
  1. <?
  2. // SERVEUR SQL
  3. $sql_serveur="sql.free.fr";
  4. // LOGIN SQL
  5. $sql_user="************";
  6. // MOT DE PASSE SQL
  7. $sql_passwd="**********";
  8. // NOM DE LA BASE DE DONNEES
  9. $sql_bdd="***********";
  10. // ETABLISSEMENT DE LA CONNEXION AVEC LA BASE DE DONNEES
  11. $db_link = mysql_connect($sql_serveur,$sql_user,$sql_passwd);
  12. ?>

Reply

Marsh Posté le 21-07-2005 à 22:16:18    

Aucun espace/tabulation ni avant le <? ni après le ?> ?


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 21-07-2005 à 22:18:26    

non

Reply

Marsh Posté le 21-07-2005 à 22:23:57    

Mwarf, j'avais pas lu ton message d'erreur, c'est écrit noir sur blanc (enfin blanc sur noir, bref [:figti] ).
 
index.php ligne 5, ton echo, voilà, il te le dit en plus.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 21-07-2005 à 22:23:57   

Reply

Marsh Posté le 21-07-2005 à 22:26:12    

Arf

Reply

Marsh Posté le 21-07-2005 à 22:26:14    

Sinon, j'avais ca quand j'ai eu l'idée de supprimer le répertoire sessions à la racine du site...


---------------
ACH/VDSHFRCoin◈1435mm⚡
Reply

Marsh Posté le 21-07-2005 à 22:26:59    

Cmment je peux faire pour affichier le lien alors? puisque le lien apparait seulement lrosque l'on es logger
idem pour la feuille de style
et encore idem pour le header
 
c'est pas possible lol je fais comment pour afficher tout ca moi lol
 
Et d'ailleur comment cela se fait il qu'en local tout fonctionne?


Message édité par hyptnos le 21-07-2005 à 22:39:51
Reply

Marsh Posté le 21-07-2005 à 23:21:29    

J'ai fait un essai
j'ai tout mis sur mon serveur Perso (un Easy pHP qui a une acces web)
et tout fonctionne parfaitement sans rien faire (juste a modifier le fichier de configuration d'acces a mysql)
mais le reste niquel
comprend pas pourquoi la comande header merde a ce point chez free alors que sur Easy Php c niquel
cela ne serai pas un truc dans PHP.ini
 
donc sinon ma question na pas changer dans mon cas comment je peux faire?
 
merci encore

Reply

Marsh Posté le 21-07-2005 à 23:35:41    

sielfried à raison !
[:roi]
Honorons le...


---------------
ACH/VDSHFRCoin◈1435mm⚡
Reply

Marsh Posté le 22-07-2005 à 08:00:34    

Oui je suis d'accord
mais comment contourner le probleme comment faire pour mettre ma banniere, ma feuille de style et différent truc qui generalement ne peux que se mettre dans l'index et lrosque je fait une redirection sa coince
franchement je ne vois vraiment pas
 
et je vois encore moins pourquoi en local sa marche et non pas sur les serveur de free

Reply

Marsh Posté le 22-07-2005 à 09:29:56    

identification.php est appelée directement ou inclue dans une autre page ?


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 22-07-2005 à 09:49:13    

Identification.php est inclu dans le index
 
je vois ce que tu vas me dire. Mettre le identification directement en code dans Index c ca?
 
Mais cela ne me dit pas pourquoi en local avec Easy PHP tout fonctionne niquel c'est pourtant un serveur apache ave cune base Mysql tout comme Free.

Reply

Marsh Posté le 22-07-2005 à 09:54:24    

Ca veut surtout dire que ton truc tente d'afficher echo '<a href="chat/index.php"> Dialoguer en direct </a>'; avant même d'avoir vérifié la bonne authentification.
 
Déjà vire ces session_is_registered et ces session_register et utilise $_SESSION.
 
http://fr.php.net/session


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 22-07-2005 à 10:18:08    

sielfried a écrit :

Ca veut surtout dire que ton truc tente d'afficher echo '<a href="chat/index.php"> Dialoguer en direct </a>'; avant même d'avoir vérifié la bonne authentification.


+1, erreur de conception du script [:spamafote]

Reply

Marsh Posté le 22-07-2005 à 11:09:51    

Je suis d'accord avec pour ceci
mais j'ai essayé de virer la ligne après il me dit la meme chose mais cette fois si avec la feuille de style puisque j'ai un echo pour appliqué le CSS. De meme que si je vire la ligne du CSS alors après jai la meme erreur avec mon Header.php (la banniere) je n'ai pas de echo dedans mais du HTML avec un <img src"......">
Donc bon j'ai l'impression que c'est sans fin.
Je désespère

Reply

Marsh Posté le 22-07-2005 à 12:07:33    

Débrouille-toi juste pour que le script d'identification s'appelle avant tout le reste dans ton index.php.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 22-07-2005 à 12:47:46    

Euh ca va faire bof d'avoir un cadre d'identification juste avant banniere tu trouve pas?
Sinon personne ne sait pourquoi en local sa marche sinon? je sais je suis chiant avec ca mais j'aimerais vraiment comprendre

Reply

Marsh Posté le 22-07-2005 à 12:51:45    

J'ai pas parlé du formulaire d'identification mais du bout de script qui vérifie les login/pass.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 22-07-2005 à 14:13:28    

Ok j'avais mal compris ta réponse  :)  
 
Donc voila le code index.php après modification (j'ai tout repris de zero)
 

Code :
  1. <?
  2. //*******************************************************************
  3. // Ci après seront les fichiers script (function et autres)
  4. //*******************************************************************
  5. // Script d'identification
  6. require('identification.php');
  7. // Définition de la connexion à la base donné
  8. require("include/connection-inc.php" );
  9. // Ouverture ou reveil de la session
  10. session_start();  
  11. if (session_is_registered("authentification" )){  
  12. // Si session réussite alors création d'un cookie
  13.  
  14. setcookie(pseudo,$_SESSION['pseudo'],time()-30);
  15. setcookie(nom,$_SESSION['nom'],time()-30);
  16. setcookie(prenom,$_SESSION['prenom'],time()-30);
  17. }
  18. //*******************************************************************
  19. // Gestion des erreurs suite à l'identification
  20. //*******************************************************************
  21. ?>
  22. <?php if(isset($_GET['erreur']) && ($_GET['erreur'] == "login" )) { ?>
  23. <script langage = "javascript">alert("Nom d'utilisateur ou mot de passe incorrect" );</script>  <? } ?>
  24. <?php if(isset($_GET['erreur']) && ($_GET['erreur'] == "delog" )) { // Affiche l'erreur ?>
  25. <script langage = "javascript">alert("Déconnexion réussie" );</script>  <?php } ?>
  26. <?php if(isset($_GET['erreur']) && ($_GET['erreur'] == "intru" )) { // Affiche l'erreur ?>
  27. <script langage = "javascript">alert("Echec d'authentification aucune session n'est ouverte. Ou vous n'avez pas les droits pour afficher cette page" );</script>  <?php } ?>
  28. <?
  29. //*******************************************************************
  30. // Ci après seront les fichiers visuel  
  31. //Attention les includes des pages des scripts devront se faire avant.
  32. //*******************************************************************
  33. // Définition de la feuille de style
  34. echo '<link href="fiblack3d.css" rel="stylesheet" type="text/css">';  
  35. // Affichage de la bannière
  36. include("include/header.php" );
  37. // Tableau d'identification
  38. ?>
  39. <table width="150" border="0" cellspacing="0" cellpadding="0">
  40. <tr>
  41.  <td><img src="images/tnav_tl.gif" width="14" height="23" alt="" /></td>
  42.  <td width="100%" class="tbltop">&nbsp;</td>
  43.  <td><img src="images/tnav_tr.gif" width="15" height="23" alt="" /></td>
  44. </tr>
  45. <tr>
  46.  <td class="tblleft">&nbsp;</td>
  47.  <td align="center"><table  border="0" cellspacing="0" cellpadding="0">
  48.    <tr>
  49.     <td align="center" width="100%" height="120">
  50.  
  51.  
  52.   <form action="" method="post" name="auth">
  53.           <a> Login </a><br>
  54.             <input type="text" name="pseudo"  size="15" id="pseudo"><br>
  55.    <a> Password </a><br>
  56.             <input type="password"name="password"  size="15" id="password"><br>
  57.             <input type="submit" name="Submit"  value="Valider"><br>
  58.   </fORM>
  59.    
  60.  </td>
  61.     </tr>
  62.    </table></td>
  63.  <td class="tblright">&nbsp;</td>
  64. </tr>
  65. <tr>
  66.  <td><img src="images/tnav_bl.gif" width="14" height="26" alt="" /></td>
  67.  <td class="tblbot">&nbsp;</td>
  68.  <td><img src="images/tnav_br.gif" width="15" height="26" alt="" /></td>
  69. </tr>
  70. </tr>  
  71. </table>


 
Dans identification il n'y a que le code de gestion de l'identification le formulaire se trouve comme vous pouvez le voir dans l'index.
 
Je suis au boulot la donc je ne peux pas faire d'essai grandeur nature mais seulement sur mon local. Et en local biensur cela fonctionne mais est ce que cela vous parait correcte?

Reply

Marsh Posté le 22-07-2005 à 14:16:02    

Haaaaaaaaaaaaaan fait gaffe à tes commentaires ;) Généralement on les faits comme ça :

/*
 *
 *
 *
 */


Mais jamais de //***** ;)

Reply

Marsh Posté le 22-07-2005 à 14:17:03    

Pourquoi ?  

Reply

Marsh Posté le 22-07-2005 à 14:19:38    

Ca fout la merde sur plein de parseurs buggés. Aussi, pour faire un bloc de commentaires, on fout pas de // sur chaque ligne. On englobe dans un /* */. Enfin pour finir, un p'tit tour à la moulinette de PhpDoc pour obtenir une doc format HTML, on écrira les commentaires par exemple avec :

/**
 * Fonction qui retourne un truc si on lui file quelque chose
 *
 * @param string $plop Le machin à filer
 * @return mixed Le machin retourné
 */


Et tu te retrouves avec une super doc style javadoc [:dawa]


Message édité par FlorentG le 22-07-2005 à 14:20:16
Reply

Marsh Posté le 22-07-2005 à 14:38:59    

Ha okey, je savais pas.
 

Reply

Marsh Posté le 22-07-2005 à 15:38:45    

Merci pour la lecon :-) moi non plus je savais pas :-)
 
Sinon personne ne sait vraiment pas pour la difference entre local et serveur Free concernenant les header?
 
Je sais je sais je suis chiant lol

Reply

Marsh Posté le 22-07-2005 à 19:45:11    

Up pour ma question  sur la différence de l'excution du script en local avec Easy php ou tout est foncitonnel
et sur le serveur Free ou rien n'est fonctionnel

Reply

Marsh Posté le 22-07-2005 à 19:56:14    

Ya une question de buffer: easyphp envoie la page une fois tout le script terminé alors que free envoie la page des qu'il voit un truc à envoyer au navigateur.
 :)


---------------
ACH/VDSHFRCoin◈1435mm⚡
Reply

Marsh Posté le 23-07-2005 à 04:12:23    

Ha bon ?
C'est vraiment une daube easyphp alors. :D

Reply

Marsh Posté le 25-07-2005 à 19:39:55    

Bon bas merci a toute les personnes qui m'ont aider j'ai reussi a refaire mon code de facon fonctionnel. Et cela ma permis de comprendre le fonctionne.
 
Et aussi de comprendre que Easy php bas fallait pas s'y fier :-)
 
Merci encore

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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