IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Probleme de contrôle de champs


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 62
    Points : 26
    Points
    26
    Par défaut Probleme de contrôle de champs
    Bonjour,

    j'ai un formulaire pour une inscription en ligne avec le contrôle des champs obligatoires (nom, mail...)

    si les gens ne remplissent pas ces champs il s'affichent en rouge et l'utilisateur doit resaisir...

    dans le cas où les champs sont bien renseignés il sera dirigé vers une page : "OK VOUS ETES ENREGISTRES"

    mais ce n'est pas le cas meme si les champs sont renseignés...
    voici mon code de mes 2 pages...

    merci
    Pierre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    <?php
    class testTools {
      var $errTab; //Tableau contenant les erreurs détectées
      var $Count; //Variable contenant le nombre d'erreurs détectées
      var $fstyle; //Nom du style CSS par défaut quand il y a une erreur.
     
      //Constructeur de la classe ici on passe en paramêtre le nom du style d'erreur par defaut.
      function testTools($fstyle)
      {
        $this->Count=0;
        $this->fstyle=$fstyle;
      }
     
      //Fonction qui permet de securiser un champ texte de manière à pouvoir être stocké dans une base de données.
      //Si vous voulez autoriser les tag HTML alors il faut mettre la ligne du strip_tags en commentaire.
      function secure($var)
      {
        $vars=$var;
        if (!is_numeric($var))
        {
          $vars=htmlentities($vars);
          $vars=strip_tags($vars);
        }
        return $vars;
      }
     
      //Fonction principale de la classe qui ajoute un nom de style CSS à un nom de champ de formulaire.
      function add($title,$style)
      {
        $this->errTab[0][$this->Count]=$title;
        $this->errTab[1][$this->Count++]=$style;
      }
     
      //Fonction qui permet d'effectuer un test sur un champ de type EMAIL.
      function mailtest($var,$name)
      {
        if (!eregi("^[_a-z0-9-]+(\\.[_a-z0-9-]+)*@([0-9a-z](-?[0-9a-z])*\\.)+[a-z]{2}([zmuvtg]|fo|me)?$",$var))
          $this->add($name,$this->fstyle);
      }
     
      //Fonction qui permet d'effectuer un test sur un champ de type INT.
      function inttest($var,$name)
      {
        if (($var==0)||(!is_numeric($var)))
          $this->add($name,$this->fstyle);
      }
     
      //Fonction qui permet d'effectuer un test sur un champ de type TIME.
      function timetest($varh,$varm,$vars,$name)
      {
        if ((($varh>24)||($varm>59)||($vars>59))||(($varh<0)||($varm<0)||($vars<0)))
          $this->add($name,$this->fstyle);
      }
     
      //Fonction qui permet d'effectuer un test sur un champ de type URL.
      function urltest($var,$name)
      {
        if ((substr($var,0,4)!="www.")&&(substr($var,0,7)!="http://"))
          $this->add($name,$this->fstyle);    
      }
     
      //Fonction qui permet d'effectuer un test sur un champ de type STRING.
      function stringtest($var,$name)
      {
        if (strlen(trim($var))==0)
          $this->add($name,$this->fstyle);    
      }
     
      //Fonction qui permet d'effectuer un test sur un champ de type DATE.
      function datetest($var1,$var2,$var3,$name)
      {
        if (!checkdate($var2,$var1,$var3))
          $this->add($name,$this->fstyle);    
      }
     
      //Fonction qui recherche un style CSS associé à un champ donné.
      function fieldError($name,$default)
      {
        if (is_array($this->errTab[0]))
          foreach($this->errTab[0] as $key => $value)
          {
            if ($value==$name)
              return $this->errTab[1][$key];
          }
        return $default;
      }
     
    }
    ?>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    <?php 
    include ("validator.php");
    $test = new testTools("fielderror");
     
    if ($_POST["f"]==1) { 
      $formPrenom = $test->secure($_POST["Prenom"]);
     
      $formNom = $test->secure($_POST["Nom"]);
      $test->stringtest($formNom,"Nom");
     
      $formSociete = $test->secure($_POST["Societe"]);
      $test->stringtest($formSociete,"Societe");
     
      $formFonction = $test->secure($_POST["Fonction"]);
      $formAdresse = $test->secure($_POST["Adresse"]);
      $formTelephone = $test->secure($_POST["Telephone"]);
     
      $test->mailtest($_POST["Mail"],"Mail");
     
      $formCommentaires = $test->secure($_POST["Commentaires"]);
      $test->stringtest($formCommentaires,"Commentaires");
     
      if ($test->Count==0) {
        //Traitement lorsque tous les tests sont passés avec succès
     
        header("location: envoiOk.php");
      }
    }
    ?>
    <html>
    <head>
    <title>Test de formulaire</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <style type="text/css">
      .fielderror { color: red; }
      .fieldreq { color: blue;}
    </style>
    </head>
    <body>
    <form action="form.php" method="post" name="Contact" id="Contact">
    Veuillez s'il vous plait remplir les champs suivants: <br><br>
    <?php
    if ($_POST["f"]==1)
      echo "Les champs en rouge doivent être remplis!";               
    ?>
    <strong class="<?=$test->fieldError("Nom","fieldreq")?>">Nom:</strong> <br>
    <input name="Nom" type="text" class="textbox" size="50" value="<?=$formNom?>" maxlength="50">
    <br>
    <br>
    <strong class="<?=$test->fieldError("Prenom","fieldreq")?>">Prénom</strong>: <br>
    <input name="Prenom" type="text" class="textbox" id="Boite" size="50" value="<?=$formPrenom?>" maxlength="50">
    <br>
    <br>
    <strong class="<?=$test->fieldError("Societe","fieldreq")?>">Soci&eacute;t&eacute;</strong>: <br>
    <input name="Societe" type="text" class="textbox" id="Boite" size="50" value="<?=$formSociete?>" maxlength="50">
    <br>
    <br>
    <strong class="<?=$test->fieldError("Fonction","fieldreq")?>">Fonction:</strong> <br>
    <input name="Fonction" type="text" class="textbox" id="Fonction" size="50" value="<?=$formFonction?>" maxlength="50">
    <br>
    <br>
    <strong class="<?=$test->fieldError("Adresse","fieldreq")?>">Adresse:</strong> <br>
    <input name="Adresse" type="text" class="textbox" id="Fonction" size="50" value="<?=$formAdresse?>" maxlength="50">
    <br>
    <br>
    <strong class="<?=$test->fieldError("Telephone","fieldreq")?>">Téléphone</strong> <br>
    <input name="Telephone" type="text" class="textbox" id="Fonction" size="50" value="<?=$formTelephone?>" maxlength="50">
    <br>
    <br>
    <strong class="<?=$test->fieldError("Mail","fieldreq")?>">Mail:</strong> <br>
    <input name="Mail" type="text" class="textbox" id="Mail" size="50" value="<?=$_POST["Mail"]?>" maxlength="50">
    <br>
    <br>
    <strong class="<?=$test->fieldError("Commentaires","fieldreq")?>">Commentaires: </strong><br>
    <textarea name="Commentaires" cols="50" rows="10" class="textbox" id="Commentaires"><?=$formCommentaires?></textarea>
    <br>
    <br>
    <input name="Submit2" type="submit"  value="Envoyer">
    <input name="Submit2" type="reset"  value="Annuler">
    <input type="hidden" name="f" value="1">
    </form>
    </body>
    </html>

  2. #2
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    salut,
    il faudrait que tu sois déjà sûr que toutes tes valeurs de champs sont transmises lors de l'envoie du formulaire. Pour cela, tu fais un simple en debut de fichier.

    Ensuite il faudrait que tu essaies de localiser quel champ ne passe pas le test, pour qu'on voit quelle fonction pose un problème.

  3. #3
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut

    De même lorsque tu reçoit ton POST, tu es censé tester chaque valeur avec isset(). De cette façon, et si les E_NOTICE sont activées, tu verras si tes variables $_POST["xxx"] sont afféctées où pas.

  4. #4
    Nouveau membre du Club
    Inscrit en
    Janvier 2007
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 41
    Points : 30
    Points
    30
    Par défaut
    Et bien mieu encore "A MON AVIS", pense à faire des tests en JavaScript (qui est du coté client) biensur s'il est activé chez le client, pour ne pas alourdir le serveur par des tests non nécessaires...

Discussions similaires

  1. Probleme simple : Update du champ le + petit
    Par barok dans le forum Requêtes
    Réponses: 6
    Dernier message: 10/09/2005, 13h33
  2. contrôle de champ vide
    Par allowen dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 23/03/2005, 14h16
  3. Probleme d'extraction des champs nuls
    Par ETOKA dans le forum SQL
    Réponses: 2
    Dernier message: 17/01/2005, 11h03
  4. probleme de reconnaissance de champ
    Par jengo dans le forum Bases de données
    Réponses: 1
    Dernier message: 27/10/2004, 12h42
  5. Problème de contrôle de champ input texte
    Par NATHW dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 08/10/2004, 22h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo