Petite erreur de rien du tout , header('location

Petite erreur de rien du tout , header('location - PHP - Programmation

Marsh Posté le 07-06-2007 à 16:23:54    


Bonjour à tous
 
J'ai une petite erreur dans une page qui renvoie vers une autre :
 
 

Code :
  1. <?php
  2. require 'fonctions.php';
  3. // Vérifie si l’utilisateur est déjà identifié ou non
  4. if (!IdentifieUtilisateur( $cookie_utilisateur, $cookie_mdp)){
  5.    header('location:../defaut_milieu.htm');
  6.    exit();

 

C'est la ligne header('location...  
qui pose probleme :
 
Warning: Cannot modify header information - headers already sent by (output started at /mnt/136/sdc/8/a/dvdenstock/fonctions.php:10) in /mnt/136/sdc/8/a/dvdenstock/etat_compte.php on line 7
 
Je fais quoi moi :d

Reply

Marsh Posté le 07-06-2007 à 16:23:54   

Reply

Marsh Posté le 07-06-2007 à 16:56:01    

une recherche sur google ou sur le forum

Reply

Marsh Posté le 07-06-2007 à 17:00:38    

deja fait !

Reply

Marsh Posté le 07-06-2007 à 17:01:41    

haaaan tu cherche mal alors
t'envoi des infos dans ton fichier focntions.php :o


---------------
Blog photo/récits activités en montagne http://planetcaravan.net
Reply

Marsh Posté le 07-06-2007 à 17:04:13    

yes , j'avais bien saisie qu'il y a un doublon mais j'arrive pas a gérer ce probleme ;)
 
merci

Reply

Marsh Posté le 07-06-2007 à 17:06:50    

ah merdouille :o
moi non plus je gere pas !  
 
cherche dans ton code ! on peu rien faire pour toi là


---------------
Blog photo/récits activités en montagne http://planetcaravan.net
Reply

Marsh Posté le 07-06-2007 à 18:45:14    

merci pour ces liens

 

:jap:  
 
 
 
edit, la fameuse ligne 10 :
 
        %s</FONT></H3></BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE>\n", $message);


Message édité par loic_02800 le 07-06-2007 à 18:46:21
Reply

Marsh Posté le 07-06-2007 à 18:52:43    

Cette erreur montre l'échec total de PHP à réussir à faire quelque chose de clair et simple [:dawa]

Reply

Marsh Posté le 07-06-2007 à 18:55:25    

merci FlorentG :d
 
ma ligne commence par ce %s, il me semble louche ce truc la :d

Reply

Marsh Posté le 07-06-2007 à 18:55:25   

Reply

Marsh Posté le 07-06-2007 à 19:00:45    

Si c'est avec un printf, c'est normal. Maintenant l'idéal dans un script PHP est de ne rien afficher tant que tout n'es pas sûr d'être OK.

Reply

Marsh Posté le 07-06-2007 à 20:15:25    

L'idéal c'est aussi de balancer quelques lignes AVANT et APRÈS la ligne concernée :D


---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 07-06-2007 à 20:15:47    

FlorentG a écrit :

Cette erreur montre l'échec total de PHP à réussir à faire quelque chose de clair et simple [:dawa]

 

Stadire ? :o

Message cité 1 fois
Message édité par Dj YeLL le 07-06-2007 à 20:15:54

---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 08-06-2007 à 09:15:00    

FlorentG a écrit :

Cette erreur montre l'échec total de PHP à réussir à faire quelque chose de clair et simple [:dawa]


Elle montre surtout l'incapacité totale des utilisateurs à lire 3 lignes de doc.

Reply

Marsh Posté le 08-06-2007 à 10:25:34    


Il aurait fallu mieux séparer la partie headers et la partie response entity, pour que ce soit plus clair. Avec l'output buffering c'est un peu mieux, mais bon...
 

matafan a écrit :

Elle montre surtout l'incapacité totale des utilisateurs à lire 3 lignes de doc.


[:prosterne]

Reply

Marsh Posté le 08-06-2007 à 13:57:37    

Merci pour vos réponses  :D

 

salut DJ Yell  :jap:  , merci au passage pour l'enorme coup de main  ;)

 

Voici donc la page etat_compte :  
 
 

Code :
  1. <?php
  2. require 'fonctions.php';
  3. // Vérifie si l’utilisateur est déjà identifié ou non
  4. if (!IdentifieUtilisateur( $cookie_utilisateur, $cookie_mdp)){
  5.    header("Location: /defaut_milieu.htm');
  6.    exit();
  7. }
  8. // Connexion à la base de données
  9. if (!($link = mysql_pconnect($DB_SERVER, $DB_LOGIN, $DB_PASSWORD))){
  10.    AfficheMessErr(sprintf("erreur interne %d:%s\n",
  11.       mysql_errno(), mysql_error()));
  12.    exit() ;
  13. }
  14. // Obtenir le solde actuel de l’utilisateur
  15. if (!($resultat=mysql_db_query($DB, "select * from profil_utilisateur where
  16.                       id_utilisateur='$cookie_utilisateur'" ))){
  17.    AfficheMessErr(sprintf("erreur interne %d:%s\n",
  18.       mysql_errno(), mysql_error()));
  19.    exit() ;
  20. }
  21. if (($ligne2 = mysql_fetch_array($resultat)))
  22. {
  23.    $SoldeActuel = $ligne2["solde_compte"];
  24. }
  25. mysql_free_result($resultat) ;
  26. ?>
  27. <html><head><title>VOir le panier</title></head><body bgcolor="#FFFFFF"><div align="center"><center><table>
  28. <td>
  29. <tr>
  30. <img src="graphs/header.jpg" align="center">
  31. </tr>
  32. </td>
  33. </table>
  34. </div>
  35. <DIV align="center">
  36. <TABLE border="2" cellpadding="0" cellspacing="0" width="95%">
  37.   <TR>
  38.     <TD width="50%" COLSPAN="4"><CENTER><BR>
  39.       <FONT face="Sans Serif" color="#804000"><STRONG>
  40. État du compte de l’utilisateur</STRONG></FONT></CENTER><BR></TD>
  41.     <TD width="50%" COLSPAN="3">
  42.       <CENTER><BR><FONT face="Sans Serif" color="#804000"><STRONG><U>
  43.         Solde actuel : <?php echo $SoldeActuel; ?>F
  44.       </U></STRONG></FONT></CENTER><BR>
  45.     </TD>
  46.   </TR>
  47.   <TR>
  48.     <TD width="10%" align="center">
  49.       <FONT face="Sans Serif"color="#804000"><STRONG><SMALL>
  50.          No. Commande </SMALL></STRONG></FONT></TD>
  51.     <TD width="20%" align="center">
  52.       <FONT face="Sans Serif"color="#804000"><STRONG><SMALL>
  53.         Titre</SMALL></STRONG></FONT></TD>
  54.     <TD width="18%" align="center">
  55.       <FONT face="Sans Serif"color="#804000"><STRONG><SMALL>
  56.         Artiste</SMALL></STRONG></FONT></TD>
  57.     <TD width="12%" align="center">
  58.       <FONT face="Sans Serif"color="#804000"><STRONG><SMALL>
  59.         Quantité</SMALL></STRONG></FONT></TD>
  60.     <TD width="14%" align="center">
  61.       <FONT face="Sans Serif"color="#804000"><STRONG><SMALL>
  62.         Date</SMALL></STRONG></FONT></TD>
  63.     <TD width="15%" align="center">
  64.       <FONT face="Sans Serif"color="#804000"><STRONG><SMALL>
  65.         État</SMALL></STRONG></FONT></TD>
  66.   </TR>
  67. <?php
  68. // Lire tous les enregistrements des transactions de l’utilisateur
  69. if (!($resultat1 =mysql_db_query($DB, "select * from transaction, spectacles_enfants where
  70.                     id_utilisateur='$cookie_utilisateur' and transaction.no_spectacle
  71.                     = spectacles_enfants.no_spectacle" ))){
  72.    AfficheMessErr(sprintf("erreur interne %d:%s\n",
  73.       mysql_errno(), mysql_error()));
  74.    exit() ;
  75. }
  76. if (!($resultat2 =mysql_db_query($DB, "select * from transaction, spectacles_adultes
  77.                          where id_utilisateur='$cookie_utilisateur' and transaction.no_spectacle
  78.                          = spectacles_adultes.no_spectacle" ))){
  79.    AfficheMessErr(sprintf("erreur interne %d:%s\n",
  80.       mysql_errno(), mysql_error()));
  81.    exit() ;
  82. }
  83. while (($ligne=mysql_fetch_array($resultat1)) ||
  84.                        ($ligne = mysql_fetch_array($resultat2)))
  85. {
  86. ?>
  87.   <TR>
  88.     <TD width="10%" align="center">
  89.       <FONT face="Sans Serif"color="#804000"><SMALL>
  90.         <?php echo($ligne["no_commande"]); ?></SMALL></FONT></TD>
  91.     <TD width="20%" align="center">
  92.       <FONT face="Sans Serif"color="#804000"><SMALL>
  93. <?php
  94. echo($ligne["titre"]);
  95. ?>
  96.       </SMALL></FONT></TD>
  97.     <TD width="18%" align="center">
  98.       <FONT face="Sans Serif"color="#804000"><SMALL>
  99. <?php
  100. if (ereg("^L", $ligne["no_spectacle"])){
  101.    echo $ligne["auteur"] ;
  102. } else {
  103.    echo $ligne["artiste"] ;
  104. }
  105. ?>
  106.     </SMALL></FONT></TD>
  107.     <TD width="12%" align="center">
  108.       <FONT face="Sans Serif"color="#804000"><SMALL>
  109.         <?php echo($ligne["quantite"]) ?></SMALL></FONT></TD>
  110.     <TD width="14%" align="center">
  111.       <FONT face="Sans Serif"color="#804000"><SMALL>
  112.         <?php echo($ligne["date"]) ?></SMALL></FONT></TD>
  113.     <TD width="15%" align="center">
  114.       <FONT face="Sans Serif"color="#804000"><SMALL>
  115.         <?php echo($ligne["etat"]) ?></SMALL></FONT></TD>
  116.   </TR>
  117. <?php
  118. } /* Fin du while */
  119. ?>
  120. </TABLE>
  121. </DIV>
  122. </BODY>
  123. </HTML>

 

 
Et fonctions :
 
 

Code :
  1. <?php
  2. require 'commun.inc' ;
  3. // fonction IdentifieUtilisateur()
  4. function IdentifieUtilisateur($utilisateur, $motdepasse)
  5. {
  6.    global $DB_SERVER, $HTTP__HOST, $DB_LOGIN, $DB_PASSWORD, $DB, $DOCROOT ;
  7.    // Ouvre une connexion permanente avec le serveur MySQl
  8.    if (!($link = mysql_pconnect ($DB_SERVER,$DB_LOGIN, $DB_PASSWORD))) {
  9.       AfficheMessErr(sprintf("erreur interne %d:%s\n",
  10.          mysql_errno(), mysql_error()));
  11.       return 0 ;
  12.    }
  13.    // Effectuer l’identification utilisateur/mot de passe
  14.    if (!($resultat = mysql_db_query("$DB", "select * from profil_utilisateur where
  15.                    id_utilisateur='$utilisateur'" ))) {
  16.       AfficheMessErr(sprintf("erreur interne %d:%s\n",
  17.          mysql_errno(), mysql_error()));
  18.       return 0 ;
  19.    }
  20.    if (($ligne = mysql_fetch_array($resultat)) && ($motdepasse == $ligne["motdepasse"]
  21.                  && $motdepasse != "" ))
  22.       return 1 ;
  23.    else
  24.       return 0 ;
  25. }
  26. // fonction SupprimeCookies()
  27. function SupprimeCookies()
  28. {
  29.    // supprimer tous les vieux cookies
  30.    for($i=0; $i<$nbr_articles; $i++)
  31.    {
  32.       setcookie("tableau_articles[$i]", "" );
  33.       setcookie("quantité[$i]", "" );
  34.    }
  35.    setcookie("tableau_articles", "" );
  36.    setcookie("nbr_articles", "" );
  37.    setcookie("quantité", "" ) ;
  38. }
  39. ?>


 
 
pas tapé :d

Reply

Marsh Posté le 08-06-2007 à 22:45:08    

si veut utiliser un header il faut que le code appelé ne genere aucun texte avant, donc surtout pas de html:
1.[/b] ---> c quoi ca ??
 et je crois qu il faut que tu mettes le header avant le require...

Reply

Marsh Posté le 08-06-2007 à 22:48:11    

Injection SQL et tout ce que tu voudras possible :/


---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010
Reply

Marsh Posté le 08-06-2007 à 22:49:15    

krifur a écrit :

si veut utiliser un header il faut que le code appelé ne genere aucun texte avant, donc surtout pas de html:
1.[/b] ---> c quoi ca ??
 et je crois qu il faut que tu mettes le header avant le require...


 
Je suppose qu'il a juste voulu foutre un truc en gras dans le code, mais on peut pas mettre du gras dans une balise code sur le forum ;) (ce qui est d'ailleurs l'intérêt de cette balise :D )
 
Le header et le require n'ont rien à voir, il n'y a pas "d'ordre" à changer ;)
 
Regarde du côté de la fonction AfficheMessErr ça ne m'étonnerait pas que ce soit elle qui foute le merdier.


---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 08-06-2007 à 22:50:51    

WiiDS a écrit :

Injection SQL et tout ce que tu voudras possible :/


 
À quoi tu vois ça ?


---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 08-06-2007 à 22:53:54    

select * from profil_utilisateur where id_utilisateur='$utilisateur'
 
La variable $utilisateur n'est pas filtré non ?


---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010
Reply

Marsh Posté le 08-06-2007 à 23:03:17    

WiiDS a écrit :

select * from profil_utilisateur where id_utilisateur='$utilisateur'
 
La variable $utilisateur n'est pas filtré non ?


 
Elle est passée en param dans la fonction, donc faut voir la gueule de la valeur passée, j'ai pas fouiné en profondeur.


---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 08-06-2007 à 23:03:30    

ah oui ca vient pas du require ok, donc ouai c ptet sa fonction qui renvoie un mysql ERROR donc du blabla avant le header oui.
Essaye de tester juste ta function IdentifieUtilisateur il faut que ca renvoit rien du tout (bonne connexion a la base de donnees)

Reply

Marsh Posté le 08-06-2007 à 23:09:10    

oui que sous-entends tu Wiids?, protéger la variable passé dans la requéte mysql (genre utiliser la fonction addslashes() ou mysqli_escape_string()) ?ca m interesse aussi :D

 

edit: ortho

Message cité 2 fois
Message édité par krifur le 08-06-2007 à 23:56:41
Reply

Marsh Posté le 08-06-2007 à 23:10:48    

krifur a écrit :

oui que sous-entendu Wiids, protége la variable passé dans la requéte mysql (genre utiliser la fonction addslashes() ou mysqli_escape_string() ?ca m intersse aussi :D

 

mysql*_real_espace_string() :o

 

Edit: et sinon j'ai rien capté à ta phrase :o


Message édité par Dj YeLL le 08-06-2007 à 23:11:03

---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 08-06-2007 à 23:43:52    

ben non je disais que c'est sa function qui est avant le header qui renvoit une erreur mysql (du style error connexion) et donc renvoit du texte avant l'appel du header ...

Reply

Marsh Posté le 08-06-2007 à 23:45:47    

Ah bah ça je sais pas, loic_02800 n'a pas parlé d'une autre erreur que celle qu'il a cité, donc c'est possible oui :o


---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 08-06-2007 à 23:51:39    

je dirais même plus, sa fonction, dans 2/3 des cas, est conçue pour afficher du texte avant de retourner 0. Et c'est justement quand elle retourne 0 qu'il doit rediriger :D


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

Marsh Posté le 09-06-2007 à 14:37:16    

:d
 
et bas ca fait  causer en tout cas !
 
J'essaie de suivre mais c'est pas évident pour un noob :d
 
Donc il ne faut aucun texte devant l'appel du header, c'est ca que je dois virer ?
 
:jap:

Reply

Marsh Posté le 09-06-2007 à 15:47:57    

loic_02800 a écrit :

:d
 
et bas ca fait  causer en tout cas !
 
J'essaie de suivre mais c'est pas évident pour un noob :d
 
Donc il ne faut aucun texte devant l'appel du header, c'est ca que je dois virer ?
 
:jap:


ezgatkement


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

Marsh Posté le 09-06-2007 à 16:01:26    

krifur a écrit :

oui que sous-entends tu Wiids?, protéger la variable passé dans la requéte mysql (genre utiliser la fonction addslashes() ou mysqli_escape_string()) ?ca m interesse aussi :D
 
edit: ortho


 
Dans un script, pour te protéger des injections SQL voici une méthode qui marche bien :
 
- Faire un stripslashes sur les tableaux $_POST et $_GET avec array_map. Cela évite les \ mis devant les guillemets par les magic quotes, qui sont une protection de PHP mais dans l'absolu il vaut mieux éviter de se reposer sur ca. Cette fonction est d'ailleurs beaucoup critiquée et sera mise OFF par défaut dans PHP 6.
- Faire un mysql_real_escape_string sur les variables qui seront utilisées dans une requête.
 
Avec ca déjà tu es bien protégé contre les injections SQL, maintenant il existe beaucoup d'autres failles du genre (XSS en tête) et si ton script n'est pas pensé sécurité, ca peut faire mal. :/ Je laisse la parole aux pros qui auront certainement de meilleurs solutions que moi :jap:


---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010
Reply

Marsh Posté le 09-06-2007 à 16:01:51    


Postaÿ bourraÿ entraine le taÿtaÿ :o


---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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