Vérifier un champ facultatif dans un formulaire

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Vérifier un champ facultatif dans un formulaire

par neiler » 15 mars 2008, 22:15

Ok merci. Je vais essayer de faire comme ça "je pence avoir compris" :wink:.

par Hywan » 15 mars 2008, 21:07

Comme on a rempli un tableau, il faut faire : si le tableau est vide (on n'a pas eu d'erreur), alors on peut envoyer le mail, sinon on affiche le contenu du tableau pour voir les erreurs (print_r ou foreach pour un résultat plus élégant).

par neiler » 15 mars 2008, 20:34

Mon sauveur :wink:.

A la suite "des fonctions de contrôle" :oops:, je sais que ce n’est pas bon mais je n’ai pas trouvé comment faire …

par Hywan » 15 mars 2008, 20:30

Tu l'as mise où cette ligne ?

par neiler » 15 mars 2008, 20:25

Bonjour,

J’ai suivie l’exemple proposé par HyWaN pour le contrôle des champs, tout est ok. Merci HyWaN :wink:.

Pour faire les tests de vérification des champs j’avais supprimé la ligne de fonction mail. Mon problème maintenant c’est qu’une fois que j’ai rajouté la ligne :

if(mail($recipient, $subject, $msg, $mailheaders)); 
Ca ne vérifie plus le contenue des champs et m’envoie email directement.

Merci.

par neiler » 14 mars 2008, 18:03

Ok parfait merci. Je recode tout ça. :wink:

par Hywan » 14 mars 2008, 17:56

Je crois que c'est plus simple dans ton cas de gérer les cas 1 par 1. Je m'explique :
$error = array();

// si le champ n'est pas vide
if(!empty($_POST['nom'])) {
    // si son nombre de caractère est inférieur à 2 (sinon rien)
    if(strlen($_POST['nom']) < 2)
        $error[] = 'Le nom doit contenir 2 caractères au minimum.';
}
// sinon (il est vide)
else
    $error[] = 'Le nom doit être défini (champ obligatoire).';

if(!empty($_POST['email']))
    // même travail.

// notre champ facultatif
// s'il est rempli, alors on vérifie son contenu
if(!empty($_POST['facultatif'])) {

    // on vérifie son contenu
    if(/*action_non_respectée*/)
        $error[] = 'Le champ facultatif n\'est pas renseigné correctement.';
}
// sinon (s'il est vide) rien, il est facultatif !
Je n'arrive à voir où est ton champ facultatif dans ton code.

De plus, fais attention à tes bornes (1000 > 999, donc il faut mettre > 1000 par exemple, c'est mieux). Et PHP comprend les entiers, donc 7 plutôt que '7'.

par neiler » 14 mars 2008, 17:28

Merci HyWaN de m'avoir répondu aussi rapidement.

Le problème :shock: maintenant c'est qu'il ne contrôle plus les champs en aval.

Je crois que je ne suis pas fait pour le php.
            if(!empty($nom) && !empty($email) && !empty($message))
            {
                if(strlen($nom) > '2')
                {
                 if(!empty($_POST['numero']))
                 if(eregi("^[0-9]{10}$", $numero))
                        {
                        if(strlen($message) > '9')
                            {
                            if(strlen($message) < '999')
                                {
                                    {
                                    if(mail($recipient, $subject, $msg, $mailheaders));
                                    $good="Message envoyé avec succès.";
                                    }
                                unset($nom, $numero, $email, $message);
                            }
                            else
                            {
                            $error="Votre message doit contenir 1000 caractères au maximum.";
                            }
                        }
                        else
                        {
                        $error="Votre message doit contenir 10 caractères au minimum.";
                        }
                    }
                    else
                    {
                    $error="Votre numéro de téléphone doit contenir 10 chiffres sans espaces.";
                    }
                }
                else
                {
                $error="Votre nom doit contenir 3 caractères au minimum.";
                }
            }
            else
            {
            $error="Veuillez remplir tous les champs obligatoires.";
            }
        }

par Hywan » 14 mars 2008, 15:46

Bonjour et bienvenue :).

Pour ton problème, tu as déjà énoncé les cas toi-même :
  1. si le champ est vide, on ne fait pas de vérification ;
  2. sinon on vérifie son contenu.
On traduit ça en PHP :
if(!empty($_POST['monChampFacultatif'])) {

    // on vérifie son contenu
}
Et le tour est joué ;-). Tu avais déjà la réponse.

Vérifier un champ facultatif dans un formulaire

par neiler » 14 mars 2008, 15:00

Bonjour,

Je me suis décidé après plusieurs heures de recherche et le clavier par la fenêtre :shock: à vous exposez mon problème :

Je cherche à contrôler les informations saisie dans un champ facultatif. Mon champ est vide mais j’ai le message d’erreur d’afficher. Je voudrais que le message d’erreur soit afficher seulement qu’en le champ est renseigné.

Besoin de vos :idea: merci.