Problème gestion des erreurs

Problème gestion des erreurs - PHP - Programmation

Marsh Posté le 17-05-2009 à 18:36:16    

Bonjour, je fais actuellement un espace membre pour mon site ; pour cela j'ai suivi un tuto à ce lien :
http://www.siteduzero.com/tutoriel [...] mails.html
 
J'ai un problème concernant la gestion des erreurs.
 
Voici mon code :
 

Code :
  1. Code : PHP
  2. if(isset($_SESSION['erreurs']) and $_SESSION['erreurs'] > 0)
  3. {
  4. if($_SESSION['erreurs'] == 1) $_SESSION['nb_erreurs'] = '<span class="erreur">Il y a eu 1 erreur.</span><br/>';
  5. else $_SESSION['nb_erreurs'] = '<span class="erreur">Il y a eu '.$_SESSION['erreurs'].' erreurs.</span><br/>';
  6. ?>
  7. <h1>Inscription non validée.</h1>
  8. <p>Vous avez rempli le formulaire d'inscription du site et nous vous en remercions, cependant, nous n'avons
  9. pas pu valider votre inscription, en voici les raisons :<br/>
  10. <?php
  11. echo $_SESSION['nb_erreurs'];
  12. echo $_SESSION['pseudo_info'];
  13. echo $_SESSION['mdp_info'];
  14. echo $_SESSION['mdp_verif_info'];
  15. echo $_SESSION['mail_info'];
  16. echo $_SESSION['mail_verif_info'];
  17. echo $_SESSION['date_naissance_info'];
  18. echo $_SESSION['qcm_info'];
  19. echo $_SESSION['captcha_info'];
  20. if(isset($sqlbug) and $sqlbug !== true)
  21. {
  22. ?>
  23. Nous vous proposons donc de revenir à la page précédente pour corriger les erreurs. (Attention, que vous
  24. l'ayez correctement remplie ou non, la partie sur la charte et l'image est à refaire intégralement.)</p>
  25. <div class="center"><a href="inscription.php">Retour</a></div>
  26. <?php
  27. }
  28. else
  29. {
  30. ?>
  31. Une erreur est survenue dans la base de données, votre formulaire semble ne pas contenir d'erreurs, donc
  32. il est possible que le problème vienne de notre côté, réessayez de vous inscrire ou contactez-nous.</p>
  33. <div class="center"><a href="inscription.php">Retenter une inscription</a> - <a href="../contact.php">Contactez-nous</a></div>
  34. <?php
  35. }
  36. }
  37. ?>


 
 
 
Lorsque l'utilisateur qui souhaite s'inscrire fait une erreur de saisie, cette erreur lui ait indiquée par :
 

Code :
  1. Code : PHP
  2. <h1>Inscription non validée.</h1>
  3. <p>Vous avez rempli le formulaire d'inscription du site et nous vous en remercions, cependant, nous n'avons
  4. pas pu valider votre inscription, en voici les raisons :<br/>
  5. <?php
  6. echo $_SESSION['nb_erreurs'];
  7. echo $_SESSION['pseudo_info'];
  8. echo $_SESSION['mdp_info'];
  9. echo $_SESSION['mdp_verif_info'];
  10. echo $_SESSION['mail_info'];
  11. echo $_SESSION['mail_verif_info'];
  12. echo $_SESSION['date_naissance_info'];
  13. echo $_SESSION['qcm_info'];
  14. echo $_SESSION['captcha_info'];
  15. if(isset($sqlbug) and $sqlbug !== true)
  16. {
  17. ?>
  18. Nous vous proposons donc de revenir à la page précédente pour corriger les erreurs. (Attention, que vous
  19. l'ayez correctement remplie ou non, la partie sur la charte et l'image est à refaire intégralement.)</p>
  20. <div class="center"><a href="inscription.php">Retour</a></div>
  21. <?php
  22. }


 
Et on lui propose de revenir à la page précédente pour la corriger. Sauf que en + de cette erreur, PHP m'affiche le "esle" !! :
 

Code :
  1. Code : PHP
  2. else
  3. {
  4. ?>
  5. Une erreur est survenue dans la base de données, votre formulaire semble ne pas contenir d'erreurs, donc
  6. il est possible que le problème vienne de notre côté, réessayez de vous inscrire ou contactez-nous.</p>
  7. <div class="center"><a href="inscription.php">Retenter une inscription</a> - <a href="../contact.php">Contactez-nous</a></div>
  8. <?php
  9. }
  10. }
  11. ?>


 
 
Ce qui donne :
 
Accueil => Inscription 2/2
Inscription non validée.
 
Vous avez rempli le formulaire d'inscription du site et nous vous en remercions, cependant, nous n'avons pas pu valider votre inscription, en voici les raisons :
Il y a eu 2 erreurs.
Votre mot de passe doit contenir au moins une majuscule.
Votre mot de passe de vérification doit contenir au moins une majuscule.
Une erreur est survenue dans la base de données, votre formulaire semble ne pas contenir d'erreurs, donc il est possible que le problème vienne de notre côté, réessayez de vous inscrire ou contactez-nous.
Retenter une inscription - Contactez-nous
 
 
 
alors qu'il ne devrait pas, puisque il n'y a aucun problème au niveau de la base de données.
 
Je ne comprends pas :(

Reply

Marsh Posté le 17-05-2009 à 18:36:16   

Reply

Marsh Posté le 17-05-2009 à 19:57:44    

Citation :

if(isset($sqlbug) and $sqlbug !== true)

Peut-être qu'il serait plus simple d'avoir

if($sqlbug != true)

C'est presque la même chose. La différence est que $sqlbug doit être initialisée au début de la page. D'ailleurs initialiser ses variables est généralement une bonne chose à faire.

Reply

Marsh Posté le 18-05-2009 à 18:03:33    

euh, où est définie $sqlbug ? Il nous faut la partie du code où la variable est initialisée.
Et pourquoi stocker les erreurs dans des sessions :??:

Reply

Marsh Posté le 18-05-2009 à 18:32:41    


Je dirais "pour créer une flashscope permettant de les afficher après une redirection", ce qui est utile dans certains cas bien particuliers (où l'on redirige même après une erreur sur un POST, par exemple)

Message cité 1 fois
Message édité par masklinn le 18-05-2009 à 18:34:06

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 19-05-2009 à 17:25:51    

masklinn a écrit :


Je dirais "pour créer une flashscope permettant de les afficher après une redirection", ce qui est utile dans certains cas bien particuliers (où l'on redirige même après une erreur sur un POST, par exemple)

:jap:

Reply

Marsh Posté le 27-05-2009 à 09:51:14    

Salut tout le monde, désolé de ne répondre que maintenant, j'étais partie en vacances =p Je vais regarder tout ce que vous m'avez écrit, et je vais voir si ça règle mon problème ou pas.

Reply

Marsh Posté le 28-05-2009 à 21:53:03    


 
 
$sqlbug est définie ici :
 

Code :
  1. if($_SESSION['erreurs'] == 0)
  2. {
  3. $sqlbug = true; // Plantage SQL.
  4. $_SESSION['erreurs']++;
  5. }


 
 
 
Je mets le code en entier :
 

Code :
  1. <!--Test des erreurs et envoi-->
  2.  <?php
  3.  if($_SESSION['erreurs'] == 0)
  4.  {
  5.   $insertion = "INSERT INTO membres VALUES(NULL, '".mysql_real_escape_string($pseudo)."',
  6.   '".md5($mdp)."', '".mysql_real_escape_string($mail)."',
  7.   ".time().", '".mysql_real_escape_string($date_naissance)."',
  8.   '', '',
  9.   '', '',
  10.   '', '',
  11.   '', '',
  12.   ".time().", 0)";
  13.   if(mysql_query($insertion))
  14.   {
  15.    $queries++;
  16.    clearSession();
  17.    $_SESSION['inscrit'] = $pseudo;
  18.    /*informe qu'il s'est déjà inscrit s'il actualise, si son navigateur
  19.    bugue avant l'affichage de la page et qu'il recharge la page, etc.*/
  20.  ?>
  21.    <h1>Inscription validée !</h1>
  22.    <p>Vous pouvez dès maintenant vous connecter avec vos identifiants <a href="connexion.php">ici</a>.
  23.    </p>
  24.  <?php
  25.   }
  26.   else
  27.   {
  28.    if(stripos(mysql_error(), $_SESSION['form_pseudo']) !== FALSE) // Recherche du pseudo
  29.    {
  30.     unset($_SESSION['form_pseudo']);
  31.     $_SESSION['pseudo_info'] = '<span class="erreur">Le pseudo '.htmlspecialchars($pseudo, ENT_QUOTES).' est déjà pris.</span><br/>';
  32.     $_SESSION['erreurs']++;
  33.    }
  34.    if($_SESSION['erreurs'] == 0)
  35.    {
  36.     $sqlbug = true; // Plantage SQL.
  37.     $_SESSION['erreurs']++;
  38.    }
  39.   }
  40.  }
  41.  if(isset($_SESSION['erreurs']) and $_SESSION['erreurs'] > 0)
  42.  {
  43.   if($_SESSION['erreurs'] == 1) $_SESSION['nb_erreurs'] = '<span class="erreur">il y a eu 1 erreur.</span><br/>';
  44.   else $_SESSION['nb_erreurs'] = '<span class="erreur">il y a eu '.$_SESSION['erreurs'].' erreurs.</span><br/>';
  45.  ?>
  46.          <div class="error">
  47.   <h1>Inscription non validée</h1>
  48.   <p>Une ou plusieurs erreurs sont survenues :<br /><br />
  49.    <?php
  50.    echo $_SESSION['pseudo_info'];
  51.    echo $_SESSION['mdp_info'];
  52.    echo $_SESSION['mdp_verif_info'];
  53.    echo $_SESSION['mail_info'];
  54.    echo $_SESSION['mail_verif_info'];
  55.    echo $_SESSION['date_naissance_info'];
  56.    echo $_SESSION['captcha_info'];
  57.    echo '<br />';
  58.   if(isset($sqlbug) and $sqlbug !== true)
  59.   {
  60.    ?>
  61.    Nous vous proposons donc de revenir à la page précédente pour corriger les erreurs. (Attention, que vous
  62.    l'ayez correctement remplie ou non, la partie sur la charte et l'image est à refaire intégralement.)</p>
  63.    <div class="center"><a href="inscription.php">Retour</a></div></div>
  64.   <?php
  65.   }
  66.   else
  67.   {
  68.   ?>
  69.    Une erreur est survenue dans la base de données, votre formulaire semble ne pas contenir d'erreurs, donc
  70.    il est possible que le problème vienne de notre côté, réessayez de vous inscrire ou contactez-nous.</p>
  71.    <div class="center"><a href="inscription.php">Retenter une inscription</a> - <a href="../contact.php">Contactez-nous</a></div></div>
  72.   <?php
  73.   }
  74.  }
  75.   ?>

Reply

Sujets relatifs:

Leave a Replay

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