Partage
  • Partager sur Facebook
  • Partager sur Twitter

Reconnaisse à moitié d'une Regex

Dans la page inscription de mon site

    20 février 2006 à 16:35:31

    Bonjour,

    Voila, depuis hier soir je suis sur mon script de connexion/inscription pour mon site, à vrai dire tout ce passe bien, sauf un petit bémol avec une regex, en effet j'en applique au pseudo (Pour voir si il fait bien entre x et x caractères), pareil avec l'email, et pareil avec le mot de pass.

    Malheureusement ça ne marche pas pour le mot de pass, j'ai mit :
    =>

    Citation : verifinsription.php

    if (preg_match("![a-zA-Z0-9._-]{3,16}!", $pass))
    {
    }
    else
    {
    header("location:inscription.php?erreur=5");
    exit();
    }


    Normalement ça ne devrais qu'accepter les mot de pass qui contiennent entre 3 et 16 caractères, n'utilisant que les lettres de A à Z minuscule ou majuscule, ainsi que les nombres et les points, underscore, et tiret.

    Malheureusement il accepte quand même les mots de passe à plus de 16 caractères, ainsi que les parenthèses et d'autres caractères spéciaux.

    Je ne sais pas comment régler mon problème, pourtant ça marche très bien avec mes regex pour les emails et les pseudos, je ne vois pas pourquoi ça ne marche pas avec les mots de passes.

    Je vous met à disposition le lien pour tester => http://tsunammis.com/dev/connexion/inscription.php

    Voila, si vous voulez le code des deux pages, n'hésité pas je le posterai !

    Merci à l'avance,
    Ciao.
    • Partager sur Facebook
    • Partager sur Twitter
      20 février 2006 à 16:39:01

      la fonction strlen est plus facile pour la taille de la chaine ...

      EDIT : et evite les points d'exclamation comme délimiteurs de regex , ca peut planter . Mets # ou `
      • Partager sur Facebook
      • Partager sur Twitter
        20 février 2006 à 17:11:28

        Citation : canard_bleu

        la fonction strlen est plus facile pour la taille de la chaine ...

        EDIT : et evite les points d'exclamation comme délimiteurs de regex , ca peut planter . Mets # ou `



        J'ai enlever les points d'exclamation en délimiteurs pour mes regex, maintenant il me trouve toujours une erreur pour mes mots de passes :-(

        Je veux bien utiliser la fonction strlen, mais le problème c'est qu'elle va calculer que le nombre de caractères, elle ne va pas faire attention aux caractères utilisé ! Donc ils vont pouvoir mettre tout ce qu'ils veulent, et moi je ne veux pas.

        Donc va surment falloir que je trouve le moyen pour mes regex !
        • Partager sur Facebook
        • Partager sur Twitter
          20 février 2006 à 19:02:57


          if (preg_match('`^[\w.-]{3,16}$`', $pass))


          Le problème de ce motif : _____....____-- va être accepté !

          Perso, je le ferais comme ça :

          if (preg_match('`^([[:alnum:]][_.-][[:alnum:]]){3,16}$`', $pass))

          Ce qui oblige à avoir une lettre/chiffre pour commencer et une lettre/chiffre pour finir.
          • Partager sur Facebook
          • Partager sur Twitter
            20 février 2006 à 20:27:36

            Citation : Bison


            if (preg_match('`^[\w.-]{3,16}$`', $pass))



            Le problème de ce motif : _____....____-- va être accepté !

            Perso, je le ferais comme ça :


            if (preg_match('`^([[:alnum:]][_.-][[:alnum:]]){3,16}$`', $pass))


            Ce qui oblige à avoir une lettre/chiffre pour commencer et une lettre/chiffre pour finir.



            Au début, quand j'avais mit des points d'exclamation, mon code marché sauf pour les mots de passes, maintenant que j'ai mit votre code pour mon mot de pass, j'ai décider de changer les délimiteurs par les votre, c'est à dire par un '` au début et `' à la fin, d'ailleurs je n'arrive pas à faire l'apostrophe penché, c'est quel caractère ?

            Donc voila, je voudrais savoir ou ce trouve mes erreurs :-(

            Voici le code de la page d'inscription => Le code

            Et voici celui qui vérifie l'inscription, vous pourrez trouver les preg_match vers le milieu et la fin du code => Le code

            V
            oila, si quelqu'un peut m'aider, j'en serai ravi, car le je suis vraiment en galère et je n'arrive à rien, pourtant j'applique bien le cours sur les regex !

            Merci à l'avance,
            Ciao.


            • Partager sur Facebook
            • Partager sur Twitter
              20 février 2006 à 20:56:05

              Oups, j'ai fais une bourde aussi grosse que moi !
              Correction :

              $pass='a-b';
              if (!preg_match('`^[[:alnum:]]([\w.-]){1,14}[[:alnum:]]$`', $pass)) {
              echo 'pas bon';
              }
              else
              {
              echo 'bon';
              }
              • Partager sur Facebook
              • Partager sur Twitter
                20 février 2006 à 21:07:36

                Citation : Bison

                Oups, j'ai fais une bourde aussi grosse que moi !
                Correction :


                $pass='a-b';
                if (!preg_match('`^[[:alnum:]]([\w.-]){1,14}[[:alnum:]]$`', $pass)) {
                echo 'pas bon';
                }
                else
                {
                echo 'bon';
                }


                Ce que je ne comprend pas, c'est pour dans le if c'est 'Pas bon' et dans le sinon 'Bon', normalement le if c'est bon et le else pas bon ? non ? Je me trompe ?

                Peut-tu m'expliquer, pourquoi tu met '` au début ? je ne comprend pas la présence de l'apostrophe qui est penché.

                Merci bien.
                • Partager sur Facebook
                • Partager sur Twitter
                  21 février 2006 à 8:20:26

                  L'apostrophe qui est penchée, c'est l'accent grave (AltGr + 7) ou AltGr + la touche de la livre sterling sur un clavier azerty (£ µ `)

                  Ce caractère sert de délimiteur à la regex -> voir les deux liens dans ma signature.

                  Pour ce qui est du if, il est on ne peut plus normal.
                  Le ! inverse le sens de la condition c'est tout.

                  SI différent alors... pas bon
                  sinon... bon.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    21 février 2006 à 14:21:23

                    Merci pour l'explication, malheuresement ça ne veut toujours marcher, je ne vous est mit le code à disposition si vous avez un peut de temps à me consacrer

                    la page inscription avec le formulaire => ici

                    Et voici la page avec le code qui traite le formulaire => ici

                    Ce n'est pas par manque de courage que je vous fait appel, mais sa fait maintenant deux nuits que j'essai tout et n'importe quoi, sans résultat !

                    Merci à l'avance !
                    • Partager sur Facebook
                    • Partager sur Twitter
                      21 février 2006 à 20:13:43

                      Deux possibilités avec cette regex :
                      - soit elle te convient et tout va bien, tu l'utilise telle qu'elle !
                      - soit elle ne te convient pas et tu peux toujours la modifier.

                      Dans les deux cas, la décision t'appartient.
                      Pour le reste, la regex fonctionne parfaitement et c'est à toi de l'intégrer dans ton script.
                      Je ne vais pas coder à ta place, désolé.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        21 février 2006 à 21:57:06

                        Bonsoir,Merci pour votre réponse.

                        Je veux juste savoir si c'est morceau de code sont bon, ou si il ne le sont pas dite le moi.

                        Voila pour le pseudo :
                        - Entre 3 et 36 caracteres
                        - De A à Z minuscule et majuscule
                        - Ainsi que les caracteres suivant é,è,à,ê,â,ù,ï,ü,ë,',],[,.,_,-
                        Sachant que la virgule sert à séparer les caracteres.

                        Donc j'ai tappé ce code suivant !

                        if (preg_match('`[a-zA-Z0-9éèàêâùïüë\'/\]\[._-]{3,32}`', $login))
                        {
                        echo '
                        C'est Bon !';
                        }
                        else
                        {
                        echo 'C'est pas bon donc on renvoi une erreur';
                        }


                        Voila, je pense que si j'arrive à faire marcher celui la, j'arriverai bien les autres !
                        • Partager sur Facebook
                        • Partager sur Twitter

                        Reconnaisse à moitié d'une Regex

                        × 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