Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3112 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Petite erreur de rien du tout , header('location

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Petite erreur de rien du tout , header('location

n°1571647
loic_02800
Dehors les boulets :o
Posté le 07-06-2007 à 16:23:54  profilanswer
 


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

mood
Publicité
Posté le 07-06-2007 à 16:23:54  profilanswer
 

n°1571675
anapajari
s/travail/glanding on hfr/gs;
Posté le 07-06-2007 à 16:56:01  profilanswer
 

une recherche sur google ou sur le forum

n°1571686
loic_02800
Dehors les boulets :o
Posté le 07-06-2007 à 17:00:38  profilanswer
 

deja fait !

n°1571687
zecrazytux
Posté le 07-06-2007 à 17:01:41  profilanswer
 

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
n°1571688
loic_02800
Dehors les boulets :o
Posté le 07-06-2007 à 17:04:13  profilanswer
 

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

n°1571692
zecrazytux
Posté le 07-06-2007 à 17:06:50  profilanswer
 

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
n°1571708
anapajari
s/travail/glanding on hfr/gs;
Posté le 07-06-2007 à 17:24:33  profilanswer
 
n°1571769
loic_02800
Dehors les boulets :o
Posté le 07-06-2007 à 18:45:14  profilanswer
 

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
n°1571774
FlorentG
Unité de Masse
Posté le 07-06-2007 à 18:52:43  profilanswer
 

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

n°1571775
loic_02800
Dehors les boulets :o
Posté le 07-06-2007 à 18:55:25  profilanswer
 

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

mood
Publicité
Posté le 07-06-2007 à 18:55:25  profilanswer
 

n°1571787
FlorentG
Unité de Masse
Posté le 07-06-2007 à 19:00:45  profilanswer
 

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.

n°1571860
Dj YeLL
$question = $to_be || !$to_be;
Posté le 07-06-2007 à 20:15:25  profilanswer
 

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


---------------
Gamertag: CoteBlack YeLL
n°1571861
Dj YeLL
$question = $to_be || !$to_be;
Posté le 07-06-2007 à 20:15:47  profilanswer
 

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
n°1571969
matafan
Posté le 08-06-2007 à 09:15:00  profilanswer
 

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.

n°1572023
FlorentG
Unité de Masse
Posté le 08-06-2007 à 10:25:34  profilanswer
 


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]

n°1572290
loic_02800
Dehors les boulets :o
Posté le 08-06-2007 à 13:57:37  profilanswer
 

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

n°1572620
krifur
Posté le 08-06-2007 à 22:45:08  profilanswer
 

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...

n°1572622
WiiDS
20 titres en GC, 0 abandon, 0 DQ
Posté le 08-06-2007 à 22:48:11  profilanswer
 

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
n°1572624
Dj YeLL
$question = $to_be || !$to_be;
Posté le 08-06-2007 à 22:49:15  profilanswer
 

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
n°1572627
Dj YeLL
$question = $to_be || !$to_be;
Posté le 08-06-2007 à 22:50:51  profilanswer
 

WiiDS a écrit :

Injection SQL et tout ce que tu voudras possible :/


 
À quoi tu vois ça ?


---------------
Gamertag: CoteBlack YeLL
n°1572628
WiiDS
20 titres en GC, 0 abandon, 0 DQ
Posté le 08-06-2007 à 22:53:54  profilanswer
 

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
n°1572632
Dj YeLL
$question = $to_be || !$to_be;
Posté le 08-06-2007 à 23:03:17  profilanswer
 

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
n°1572633
krifur
Posté le 08-06-2007 à 23:03:30  profilanswer
 

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)

n°1572635
krifur
Posté le 08-06-2007 à 23:09:10  profilanswer
 

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
n°1572639
Dj YeLL
$question = $to_be || !$to_be;
Posté le 08-06-2007 à 23:10:48  profilanswer
 

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
n°1572647
krifur
Posté le 08-06-2007 à 23:43:52  profilanswer
 

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 ...

n°1572648
Dj YeLL
$question = $to_be || !$to_be;
Posté le 08-06-2007 à 23:45:47  profilanswer
 

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
n°1572650
theredled
● REC
Posté le 08-06-2007 à 23:51:39  profilanswer
 

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
n°1572709
loic_02800
Dehors les boulets :o
Posté le 09-06-2007 à 14:37:16  profilanswer
 

: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:

n°1572714
theredled
● REC
Posté le 09-06-2007 à 15:47:57  profilanswer
 

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
n°1572721
WiiDS
20 titres en GC, 0 abandon, 0 DQ
Posté le 09-06-2007 à 16:01:26  profilanswer
 

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
n°1572722
WiiDS
20 titres en GC, 0 abandon, 0 DQ
Posté le 09-06-2007 à 16:01:51  profilanswer
 


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
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Petite erreur de rien du tout , header('location

 

Sujets relatifs
[AIDE](z moi)Simulation de Clavier à partir de rien[Matlab] Petit problème pour petite routine
[C++]petite question sur l'opérateur de conversion de classeA l'aide ! erreur totalemnt incompréhensible en svg
J'ai un soucis avec mon Header...:(Passage Java/C++ petite question :)
Erreur SQL [RESOLU]pb fonction ajouter: ressource id#3 +...
euh... rien comprisPetite horloge toute con sur un site
Plus de sujets relatifs à : Petite erreur de rien du tout , header('location


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR