PHP verification de variable

Résolu
Bonjour,
Dans mon site web je souhaite créer un espace de membre.
J'ai un formulaire qui renvoie des information sur le visiteur qui veut s'inscrire.
Pour vérifie les données qu'il remplie je souhaite passe par du php qui traite les infos reçu.


// Vérification de la validité des champs
if(!ereg("^[A-Za-z0-9_]{4,20}$", $_POST["pseudo"]))
{
$message = "Votre nom d'utilisateur doit comporter entre 5 et 40 caractères.<br />";
}
elseif(!ereg("^[A-Za-z0-9]{5,40}$", $passwd))
{
$message = "Votre mot de passe doit comporter entre 5 et 40 caractères<br />";
}
elseif($passwd != $_POST["confir_passwd"])
{
$message = "Votre mot de passe n'a pas ètè correctement confirmè<br />";
}
elseif(!ereg("^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]{2,}[.][a-zA-Z]{2,4}$",$email))
{
$message = "Votre adresse e-mail n'est pas valide<br />";
}
elseif(!ereg("([1-31]{2})[/]([1-12]{2})[/]([1908-2008]{4})",$date_naissance))
{
$message = "Votre Date d'anniverssaire n'est pas au format valide <br />
Veuillez respecter le format jj/mm/aaaa. Merci.<br />";
}
else
{
// Connexion a la base de données

etc...

Pouvez vous me dire si j'utilise la meilleur méthode ????
Aussi il y a des erreur dans mon code surtout sur les
ereg je ne sais pas comment les corriger.

Merci, de me répondre.


--
GOOGLE et ton AMI utilise le   !!!!!!!!!!
Configuration: Windows XP
Firefox 3.5.2

9 réponses

  1. Bonjour,

    le meiux ne serait-il pas de tester ce que vous avez écrit ?
    ainsi vous saurez directement si cela correspond à vos attentes.
    1. j'ai tester mais il y a des erreurs surtout au niveau de la Date d'anniversaire.

      Et puis je trouve que je me complique la tache.
      Alors si quelqu'un aurais une amélioration a proposer pour rendre le code plus "alléger", je suis preneur d'idée.

      1. Il n'y a pas beaucoup d'autre solutions ...
        Pour tes ereg, il faut des délimiteurs #^[a-zA-Z0-9]$#. Après le dernier #, tu peux mettre "i" pour éviter d'avoir à faire a-zA-Z (a-z ou A-Z suffira).
        1. J'ai essayer ca cela ne marche pas, pourquoi?

          // Verification de la validite des champs
          if(!ereg("(#^[A-Za-z0-9_]{5,40}$#)", $pseudo))
          {
          $message = "<div><img src=\"../image_de_fond/attention.png\" align=\"middle\"/>Votre nom d'utilisateur doit comporter entre 5 et 40 caractères.</div><br />";
          }
          elseif(!ereg("#^[A-Za-z0-9]{5,40}$#", $passwd))
          {
          $message = "<div><img src=\"../image_de_fond/attention.png\" align=\"middle\"/>Votre mot de passe doit comporter entre 5 et 40 caractères</div><br />";
          }
          elseif($passwd != $_POST["confir_passwd"])
          {
          $message = "<div><img src=\"../image_de_fond/attention.png\" align=\"middle\"/>Votre mot de passe n'a pas ètè correctement confirm&egrave</div><br />";
          }
          elseif(!ereg("(#^[a-zA-Z0-9._-]$#)[@](#^[a-zA-Z0-9.-]{2,}$#)[.](#^[a-zA-Z]{2,4}$#)",$email))
          {
          $message = "<div><img src=\"../image_de_fond/attention.png\" align=\"middle\"/>Votre adresse e-mail n'est pas valide</div><br />";
          }
          elseif(!ereg("(#^[1-31]{2}$#)[/](#^[1-12]{2}$#)[/](#^[1908-2008]{4}$#)",$date_naissance))
          {
          $message = "<div><img src=\"../image_de_fond/attention.png\" align=\"middle\"/>Votre Date d'anniverssaire n'est pas au format valide <br />
          Veuillez respecter le format jj/mm/aaaa. Merci.</div><br />";
          }
          else
          {
          // Connexion a la base de donnees
          1. À la deuxième ligne :
            if(!ereg("(#^[A-Za-z0-9_]{5,40}$#)", $pseudo)) 

            D'où provient cette parenthèse ?
            1. J'ai un peu modifier le code mais maintenant cela m'affiche:

              Warning: ereg() [function.ereg]: REG_ERANGE in C:\wamp\www\membre\register.php on line 24

              Voici les lignes correspond:
              elseif(!ereg("[1-31]{2,}/[1-12]{2,}/[1908-2008]{4,}",$_POST['date_naissance']))
              {
              $message = "<div><img src=\"../image_de_fond/attention.png\" align=\"middle\"/>Votre Date d'anniverssaire n'est pas au format valide <br />
              Veuillez respecter le format jj/mm/aaaa. Merci.</div><br />";
              }
              1. Et ceci Fonctionne par contre:

                if(!ereg("[A-Za-z0-9_]{5,40}", $pseudo))
                {
                $message = "<div><img src=\"../image_de_fond/attention.png\" align=\"middle\"/>Votre pseudo doit comporter entre 5 et 40 caractères.</div><br />";
                }

                1. a mon avis leplus simple c'est de passer par du javascript pour verifier deja si les données envoyées correspondent au format que tu souhaite
                  1. Le Javascript est désactivable (et modifiable) par le visiteur.
                    Le mieux est une vérification niveau serveur (PHP, Perl, CGI, ...)
                  2. @avion-f16exact, mais si on tient compte que 99% et quelques des pc on le JS activé cela laisse quand meme un bonne marge .. ;-)

                    D'autre part en desactivant le js il va avoir beaucoup de site qui ne fonctionnerons plus correctement
                  3. @lewis34Qu'il fasse comme il veut mais c'est beaucoup plus risqué qu'avec du PHP.
                    Si quelqu'un veut "pirater" son site, il affichera sans doute le code source et avec l'extension Firebug, on peut facilement modifier le code source de la page (pour soi, sans sauvegarder sur le serveur et heureusement).
                2. Je n'y connais rien en java et je pense pas l'apprendre dans les semaines avenir.

                  Merci pour les réponses mais je crois que je me casse trop la tête.
                  Pour l'instant je vais supprimer l'anniversaire (sa marche comme sa).

                  Alors si un jour quelqu'un passe par la et me propose une solution qui fonctionne.!!!

                  1. Bonjour,

                    ne pas confondre java et javascript.
                    attention donc si vous vouliez apprendre qielquechose.