Partage
  • Partager sur Facebook
  • Partager sur Twitter

Messages d'erreurs qui ne saffichent pas

    22 mars 2019 à 15:46:31

    Bonjour, j'ai fais un espace membre avec la possibilité de faire des modifications dans le profil en suivant un tuto. J'ai rajouté à l'aide d'un membre du forum des conditions afin de sécuriser la modifications des coordonnées pour éviter les doublons, les faux emails etc.. 

    Le système fonctionne parfaitement par rapport au doublons, au mail valide et au mot de passe correspondant mais seul 2 messages d'erreurs s'affichent s'il y'en a une : Celui du pseudo déjà utilisé et celui du pseudo qui dépasse les 30 caractères. Les autres messages d'erreur ne fonctionnent pas et je sais pas pourquoi.. Aled

    Voici le code: 

    <?php
    session_start();
    
    $bdd = new PDO("mysql:host=127.0.0.1;dbname=espace_membre;charset=utf8", "root", "");
    
    if(isset($_SESSION['id'])) {
       $requser = $bdd->prepare("SELECT * FROM membres WHERE id = ?");
       $requser->execute(array($_SESSION['id']));
       $user = $requser->fetch();
       if(isset($_POST['newpseudo']) AND !empty($_POST['newpseudo']) AND $_POST['newpseudo'] != $user['pseudo']) {
          $newpseudo = htmlspecialchars($_POST['newpseudo']);
          $newpseudolength = strlen($newpseudo);
          if($newpseudolength <= 30) {
             $reqpseudo = $bdd->prepare("SELECT * FROM membres WHERE pseudo = ?");
             $reqpseudo->execute(array($newpseudo));
             $pseudoexist = $reqpseudo->rowCount();
             if($pseudoexist == 0) {
                $insertpseudo = $bdd->prepare("UPDATE membres SET pseudo = ? WHERE id = ?");
                $insertpseudo->execute(array($newpseudo, $_SESSION['id']));
                header('Location: profil.php?id='.$_SESSION['id']);
                } else {
                   $msg = "Votre pseudo est déjà utilisé !";
                }
             } else {
                $msg = "Votre pseudo ne doit pas dépasser 30 caractères !";
             }
          }
       if(isset($_POST['newmail']) AND !empty($_POST['newmail']) AND $_POST['newmail'] != $user['mail']) {
          $newmail = htmlspecialchars($_POST['newmail']);
          if(filter_var($newmail, FILTER_VALIDATE_EMAIL)) {
             $reqmail = $bdd->prepare("SELECT * FROM membres WHERE mail = ?");
             $reqmail->execute(array($newmail));
             $mailexist = $reqmail->rowCount();
             if($mailexist == 0) {
          $insertmail = $bdd->prepare("UPDATE membres SET mail = ? WHERE id = ?");
          $insertmail->execute(array($newmail, $_SESSION['id']));
          header('Location: profil.php?id='.$_SESSION['id']);
          } else {
             $msg = "Adresse mail déjà utilisée !";
          }
       } else {
          $msg = "Votre adresse mail n'est pas valide !";
       }
    } 
       if(isset($_POST['newmdp1']) AND !empty($_POST['newmdp1']) AND isset($_POST['newmdp2']) AND !empty($_POST['newmdp2'])) {
          $mdp1 = sha1($_POST['newmdp1']);
          $mdp2 = sha1($_POST['newmdp2']);
          if($mdp1 == $mdp2) {
             $insertmdp = $bdd->prepare("UPDATE membres SET motdepasse = ? WHERE id = ?");
             $insertmdp->execute(array($mdp1, $_SESSION['id']));
             header('Location: profil.php?id='.$_SESSION['id']);
             } else {
                $msg = "Vos deux mdp ne correspondent pas !";
             }
          }
    
       if(isset($_POST['newpseudo']) AND $_POST['newpseudo'] == $user['pseudo'])
       {
        header('Location: profil.php?id='.$_SESSION['id']);
       }
    ?>
    • Partager sur Facebook
    • Partager sur Twitter

    Je recherche un mentor afin de mieux progresser dans l'apprentissage du PHP et JS. Je suis pas trop chiant :D

      22 mars 2019 à 22:17:50

      Bonjour

      - Pas de htmlspecialchar sur les données entrées en bdd (cf ma signature)

      - Tu écrases $msg à chaque erreurs donc tu n'auras pas toutes les erreurs, utilises plutôt un tableau ou a défaut la concaténation

      - Quelle est l'intérêt de comparer 2 mdp encoder ? Tu peux très bien les comparer avant l'encodage et ensuite n'encoder uniquement celui qui ira en bdd (économie de ressource)

      - la fonction isset est incluse donc la fonction empty donc inutile de faire isset AND !empty, juste !empty suffit.

      • Partager sur Facebook
      • Partager sur Twitter
        27 mars 2019 à 14:21:29

        Merci pour ta réponse Aurélien.C

        Je ne sais pas du tout comment m'y prendre pour en faire un tableau ou faire la concaténation, est-ce que quelqu'un pourrait me donner une piste ou un exemple s'il vous plaît? 

        Pour le reste, merci je vais m'en occuper.

        • Partager sur Facebook
        • Partager sur Twitter

        Je recherche un mentor afin de mieux progresser dans l'apprentissage du PHP et JS. Je suis pas trop chiant :D

        Messages d'erreurs qui ne saffichent pas

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown