Partage
  • Partager sur Facebook
  • Partager sur Twitter

Un script qui s'éxecute à l'envers !

Je ne comprends pas

Sujet résolu
    1 mai 2006 à 17:46:02

    Bonjour à tous !

    Je fais un script avec un formulaire qui ne demande que l'email et sa confirmation, le voici en XHTML :

    <form name="ajouter_personne_a_newser" method="post" action="newsletter2.php">
    <input type="text" name="email" id="email" /> Email<br />
    <input type="text" name="confirm_email" id="confirm_email" /> Confirmation de l'email
    </form>


    Et voici ce qui se passe sous newsletter2.php :

    <?php
    $email = htmlentities($_POST['email']);
            if (preg_match("!^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$!", $email)) // Verifie que l'email entrée n'est pas une fausse
            {
                    $confirm_email = htmlentities($_POST['confirm_email']);
                    if($email=="$confirm_email")
                    {
                            // Alors j'inscrit le membre (je ne marque pas le contenu pour simplifier
                    }
                    else
                    {
                            // Alors là l'email et l'email de confirmation sont différents un message d'erreur s'affiche et retourne l'inscriteur vers le formulaire
                    }
            }
            else
            {
                    // J'explique au inscriteur que son email n'est pas correcte et le retourne vers le formulaire
            }
    ?>


    Le problème est que si je rentre bien la meme email dans le champ de l'email et dans le champ de confirmation, le script va afficher l'erreur au lieu de faire le contraire ! :o:o:-°o_O

    Quelqu'un à t'il déjà eu ce problème et pourrait-il m'aider ?
    Merci par avance
    Baba0076
    • Partager sur Facebook
    • Partager sur Twitter
      1 mai 2006 à 19:05:42

      Et si tu mets des mails différents, il t'affiche que c'est correct???

      Enlève tes doubles quotes dans le if: $email == "$confirm_email" même si ça n'est, je ne crois pas, la source du problème...
      • Partager sur Facebook
      • Partager sur Twitter
        1 mai 2006 à 19:31:43

        o_O

        Ton code devrait fonctionner pourtant...
        Par contre, tu te complique la vie !

        if ( !preg_match('`^[[:alnum:]]([-_.]?[[:alnum:]])*@[[:alnum:]]([-.]?[[:alnum:]])+\.([a-z]{2,6})$`', $_POST['email']) ) {
          echo 'email invalide !';
        }
        elseif ( $_POST['email'] <> $_POST['confirm_email'] ) {
          echo 'Les adresses email ne correspondent pas !';
        }
        else {
          echo 'email valide !';
        }
        • Partager sur Facebook
        • Partager sur Twitter
          1 mai 2006 à 19:34:15

          Ah bin voilà à quoi on arrive en écoutant les extrémistes du htmlentities();
          Moi suis curieux que tu m'expliques à quoi peut bien servir tes htmlentities() ?
          • Partager sur Facebook
          • Partager sur Twitter
            1 mai 2006 à 19:43:21

            Salut,

            Essai comme ceci:

            <?php
            $email = addslashes($_POST['email']);
            if (preg_match("!^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$!", $email)) // Verifie que l'email entrée n'est pas une fausse
            {
                    $confirm_email = addslashes($_POST['confirm_email']);
                    if($email==$confirm_email)
                    {
                            // Alors j'inscrit le membre (je ne marque pas le contenu pour simplifier
                    }
                    else
                    {
                            // Alors là l'email et l'email de confirmation sont différents un message d'erreur s'affiche et retourne l'inscriteur vers le formulaire
                    }
            }
            else
            {
            // J'explique au inscriteur que son email n'est pas correcte et le retourne vers le formulaire
            }
            ?>


            Allez ++
            • Partager sur Facebook
            • Partager sur Twitter
              1 mai 2006 à 19:45:48

              Citation : Percoman

              Salut,

              Essai comme ceci:

              <?php
              $email = addslashes($_POST['email']);
              if (preg_match("!^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$!", $email)) // Verifie que l'email entrée n'est pas une fausse
              {
                      $confirm_email = addslashes($_POST['confirm_email']);
                      if($email==$confirm_email)
                      {
                              // Alors j'inscrit le membre (je ne marque pas le contenu pour simplifier
                      }
                      else
                      {
                              // Alors là l'email et l'email de confirmation sont différents un message d'erreur s'affiche et retourne l'inscriteur vers le formulaire
                      }
              }
              else
              {
              // J'explique au inscriteur que son email n'est pas correcte et le retourne vers le formulaire
              }
              ?>



              Allez ++


              Guère mieux ! ^^
              Pourquoi addslashes et pourquoi cette regex passoire?
              • Partager sur Facebook
              • Partager sur Twitter
                1 mai 2006 à 19:52:12

                Pour les regex c'est pas a moi qui faut demander xDDDDDD
                A mon avis il veut sécurisé cela mais sa sert rien pour ce qu'il fait..
                • Partager sur Facebook
                • Partager sur Twitter
                  1 mai 2006 à 20:22:50

                  Pas besoin de floritures !
                  La regex permet déjà de sécuriser le tout !!!
                  • Partager sur Facebook
                  • Partager sur Twitter
                    1 mai 2006 à 20:27:48

                    La regex est une passoire !
                    Voir là : Vérif email
                    • Partager sur Facebook
                    • Partager sur Twitter
                      1 mai 2006 à 20:31:25

                      Voici ma regex :p

                      Bison dis ce que tu en penses :)

                      <?PHP

                      function ValidEmail($addr){
                              if(substr_count($addr,"@")!=1)
                                      return false;
                              list($local, $domain) = explode("@", $addr);
                             
                              $pattern_local = '^([0-9a-z]*([-|_]?[0-9a-z]+)*)(([-|_]?)\.([-|_]?)[0-9a-z]*([-|_]?[0-9a-z]+)+)*([-|_]?)$';
                              $pattern_domain = '^([0-9a-z]+([-]?[0-9a-z]+)*)(([-]?)\.([-]?)[0-9a-z]*([-]?[0-9a-z]+)+)*\.[a-z]{2,4}$';

                              $match_local = eregi($pattern_local, $local);
                              $match_domain = eregi($pattern_domain, $domain);
                             
                              return ($match_local && $match_domain && gethostbyname($domain));
                      } ?>


                      • Partager sur Facebook
                      • Partager sur Twitter
                        1 mai 2006 à 20:34:59

                        Non , on va procéder autrement !
                        Il ne faut pas dire : Bison qu'est ce que tu en penses ?
                        Mais il faut dire : Bison je vais t'expliquer ma regex !
                        • Partager sur Facebook
                        • Partager sur Twitter
                          1 mai 2006 à 20:36:34

                          ah bah alors elle est pas compliquée, elle analyse avant le @puis après le @ (le domaine ) puis je teste le domaine avec gethostbyname()

                          fin vu que tu t'y connais mieux que moi :) donc je demande ton avis :)
                          • Partager sur Facebook
                          • Partager sur Twitter
                            1 mai 2006 à 20:38:42

                            Non, mais ta regex, je la comprends très bien. ;)
                            Je voulais juste que tu me l'expliques.

                            Regarde dans ma signature et suis le lien : Vérif d'email.
                            • Partager sur Facebook
                            • Partager sur Twitter
                              1 mai 2006 à 20:42:37

                              oui bah : if(!preg_match('`^[[:alnum:]]([-_.]?[[:alnum:]])*@[[:alnum:]]([-.]?[[:alnum:]])+\.([a-z]{2,6})$`',
                              $chaine))
                              {
                              echo 'pas bon';
                              }
                              else
                              {
                              echo 'bon';
                              }
                              ?>

                              tu trouves qu'elle est mieux? dis moi :)
                              • Partager sur Facebook
                              • Partager sur Twitter
                                1 mai 2006 à 20:43:24

                                Citation : Bison

                                La regex est une passoire !
                                Voir là : Vérif email



                                Je parlais de celle qui j'ai utilisé dans mon code, plus haut :p
                                (tu devrais la reconnaitre ;))
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  1 mai 2006 à 20:46:56

                                  Citation : Jukien

                                  Citation : Bison

                                  La regex est une passoire !
                                  Voir là : Vérif email



                                  Je parlais de celle qui j'ai utilisé dans mon code, plus haut :p
                                  (tu devrais la reconnaitre ;))


                                  Mouarf oui, celle-là c'est la mienne !
                                  Mais je parlais de celle du post initial :p
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    1 mai 2006 à 20:56:03

                                    D'ailleurs Bison, pourquoi utiliser [[:alnum:]] plutot que \w ? Juste une question d'habitude / de préférence, ou il y a réellement une différence ?
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      1 mai 2006 à 21:00:34

                                      EDIT : Je m'étais trompé en faite j'ai inversé moi même pour le preg match !! :p
                                      Voici pour mon nouveau code :

                                      <?php
                                      if(!preg_match('`^[[:alnum:]]([-_.]?[[:alnum:]])*@[[:alnum:]]([-.]?[[:alnum:]])+\.([a-z]{2,6})$`', $_POST['email'])) // Verifie que l'email entrée n'est pas une fausse
                                      {
                                              // EMAIL FAUX
                                      }
                                      else
                                      {
                                              // ON CONTINU
                                      }
                                      ?>
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        1 mai 2006 à 23:31:50

                                        Citation : Jukien

                                        D'ailleurs Bison, pourquoi utiliser [[:alnum:]] plutot que \w ? Juste une question d'habitude / de préférence, ou il y a réellement une différence ?


                                        Ouais Bison, t'es con quand même... :p

                                        A ton avis ?
                                        a) habitude
                                        b) préférence
                                        c) différence

                                        Vais te laisser chercher un peu ;)
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          2 mai 2006 à 17:04:34

                                          J'ai rien dit :-°



                                          Pour justifier ma question, j'accuse la doc PHP de ne pas être très explicite à ce sujet :p

                                          Citation : doc PHP

                                          \w tout caractère de "mot"



                                          Alors que Bison précise bien :

                                          Citation : Expreg

                                          \w Indique un mot qui correspond à la classe [0-9a-zA-Z_]



                                          Autrement dit, juste une histoire d'underscore :)
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            2 mai 2006 à 17:20:58

                                            Citation : Jukien

                                            Autrement dit, juste une histoire d'underscore :)


                                            Ah tu vois quand tu veux ! ;)
                                            En te laissant chercher la réponse, seul comme un GRAND, tout le bénéfice est pour toi.
                                            T'as remarqué... j'ai écrit GRAND avec un R, pas avec un L :p:p:p

                                            Donc maintenant, plus d'excuses, tu le sauras ! ;)
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              2 mai 2006 à 17:35:18

                                              Citation : Bison

                                              Ah tu vois quand tu veux ! ;)



                                              Enfin, ne sous-entends pas non plus que je ne veux pas d'habitude, je crois que c'est la première question que je pose ici :p


                                              Citation : Bison

                                              <citation nom="Jukien">En te laissant chercher la réponse, seul comme un GRAND



                                              Je n'ai plus 15 ans non plus :p
                                              Même si c'est vrai que je n'ai pas encore mes premiers cheveux blancs, moi* :lol:
                                              [ je sens que je vais encore me faire épingler :-° ]


                                              Citation : Bison

                                              T'as remarqué... j'ai écrit GRAND avec un R, pas avec un L :p:p:p



                                              Encore heureux :D



                                              ---

                                              * Tout ceci est de l'humour et doit être interprété comme tel ;)
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                2 mai 2006 à 20:05:51

                                                Non non, t'inquiètes pas !
                                                Ceux qui me connaissent (de visu)savent que je suis vachement cool en fait, même si je ne résiste pas à la tentation de mettre du pétrole sur le feu dès que j'ai l'occasion.
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  3 mai 2006 à 15:24:30

                                                  Alors je prend la quelle REGEX moi ?
                                                  Si je prend ceci

                                                  <?PHP

                                                  function ValidEmail($addr){
                                                          if(substr_count($addr,"@")!=1)
                                                                  return false;
                                                          list($local, $domain) = explode("@", $addr);
                                                         
                                                          $pattern_local = '^([0-9a-z]*([-|_]?[0-9a-z]+)*)(([-|_]?)\.([-|_]?)[0-9a-z]*([-|_]?[0-9a-z]+)+)*([-|_]?)$';
                                                          $pattern_domain = '^([0-9a-z]+([-]?[0-9a-z]+)*)(([-]?)\.([-]?)[0-9a-z]*([-]?[0-9a-z]+)+)*\.[a-z]{2,4}$';

                                                          $match_local = eregi($pattern_local, $local);
                                                          $match_domain = eregi($pattern_domain, $domain);
                                                         
                                                          return ($match_local && $match_domain && gethostbyname($domain));
                                                  } ?>


                                                  Je dois faire comment après ?
                                                  Merci par avance
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    3 mai 2006 à 15:28:04

                                                    if(ValidEmail($ADRESSE))
                                                    {
                                                    ok
                                                    } else { erreur}
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      3 mai 2006 à 15:58:15

                                                      OK merci, voici le code :


                                                                      <?php
                                                                      // On déclare la fonction qui va vérifier de valider le mail
                                                                      function ValidEmail($addr)
                                                                      {
                                                                      if(substr_count($addr,"@")!=1)
                                                                              return false;
                                                                      list($local, $domain) = explode("@", $addr);
                                                                      $pattern_local = '^([0-9a-z]*([-|_]?[0-9a-z]+)*)(([-|_]?)\.([-|_]?)[0-9a-z]*([-|_]?[0-9a-z]+)+)*([-|_]?)$';
                                                                      $pattern_domain = '^([0-9a-z]+([-]?[0-9a-z]+)*)(([-]?)\.([-]?)[0-9a-z]*([-]?[0-9a-z]+)+)*\.[a-z]{2,4}$';
                                                                      $match_local = eregi($pattern_local, $local);
                                                                      $match_domain = eregi($pattern_domain, $domain);
                                                                      return ($match_local && $match_domain && gethostbyname($domain));
                                                                      }
                                                                     
                                                                      // On fait les vérifications avant d'inscrire le nouvel administrateur
                                                                      if(ValidEmail($_POST['email'])) // Verifie que l'email entrée n'est pas une fausse
                                                                      {
                                                                              if(ValidEmail($_POST['confirm_email'])) // Verifie que l'email entrée n'est pas une fausse
                                                                              {
                                                                                      if($_POST['email'] <> $_POST['confirm_email'])
                                                                                      {
                                                                                              // On continue
                                                                                      }
                                                                                      else
                                                                                      {
                                                                                              // Le mail de confirm n'est pas égal au mail !
                                                                                      }
                                                                              else
                                                                              {
                                                                                      // Le mail de confirm rentré n'est pas un vrai mail !
                                                                              }
                                                                      }
                                                                      else
                                                                      {
                                                                              // Le mail rentré n'est pas un vrai mail !
                                                                      }
                                                                      ?>


                                                      Voilà, alors est ce que j'ai tout bon là ??
                                                      Merci
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter

                                                      Un script qui s'éxecute à l'envers !

                                                      × 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