PHP formulaire saisie d'email

Résolu
Bonjour,
je voudrais m'assurer que le champs email saisie par un utilisateur a son enregistrement sur mon site dans le formulaire PHP correspant effectivement au format email,

Merci
Configuration: Windows XP
Internet Explorer 7.0

28 réponses

Résumé de la discussion

Validation de l'adresse email saisie dans un formulaire PHP repose sur une double approche: vérification du format email côté client et surtout validation côté serveur pour éviter les contournements. La meilleure réponse suggère d'utiliser filter_var($adresse_mail, FILTER_VALIDATE_EMAIL) pour valider le format, une solution efficace mais à compléter par une vérification serveur robuste, car certains environnements PHP limitent les options. D'autres échanges soulignent l'importance de la validation côté serveur indépendante de JavaScript, évoquant ereg ou preg_match en PHP selon les versions, et la nécessité d'assurer le retour correct en onsubmit. Pour améliorer la robustesse, il est recommandé d'exécuter une validation serveur avec des tests concrets d'adresses et d'utiliser des expressions régulières compatibles PCRE ou les filtres PHP selon l'hébergement.

Bobot (l’IA à votre service)
  1. bonjour,
    j'ai essayé de voir sur le lien, j'ai trouvé des javascript, j'ai essayé, mais ca retourne true or false, et un message d'erreur, et puis le formulaire se valide par la suite.
    ce que je voudrais avoir, c'est quelque chose qui interdit la validation du formulaire tant que l'email n'est pas valide, si quelqu'un pouvait m'aider, et merci
    1. Tiens cette fonction fonctionne très bien :

      filter_var($adresse_mail, FILTER_VALIDATE_EMAIL)

      Amicalement.
      1. Contributeur
        salut,

        tu le veux côté client (JS) ou côté serveur (PHP) ?
        au minimum il faut le faire en PHP.
        pour ça tu peux utiliser les filtres.

        et en JS, il faut utiliser une Regex et appeler ta fonction sur le "onsubmit" du <form>.
        si la fonction renvoie true, le formulaire sera envoyé.
        1. je me vois un peu perdu avec toutes ses reponses, je suis debutant, quelqu'un pourrait m'expliquer avec un peu plus de details,
          1. Contributeur
            il faut vérifier l'info une ou deux fois.

            quand le visiteur valide le formulaire tu peux vérifier le courriel avant d'envoyer, ça évite de recharger la page, juste pour afficher l'erreur alors que tu pouvais le faire avant.
            ça c'est Javascript et ça peut donner ça :
            <script type="text/javascript">
            function check_mail()
            {
            	lmt = document.getElementById('email');
            	if(!lmt)
            		return true;
            	else
            		return lmt.value.match('/^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/');
            }
            </script>
            <form onsubmit="check_mail();">
            	<p><input id="email"/></p>
            </form>
            

            une fois que ça fonctionne il faudra quand même vérifier les données dans ton script PHP (JS peut être désactivé par le visiteur et donc ne pas faire la vérification).

            pour ça tu utilises la fonction filter() sur la valeur que tu récupères en POST.
            1. Bonjour Dalida,
              et merci pour ta reponse,
              enfin j'ai essayé ce script mais ca ne marche pas, je laisse la cese d'email vide, et le formulaire est validé tout de meme,
              1. <HEAD>
                <TITLE>Formulaire_inscription</TITLE>
                <script language="javascript">
                function validation()
                {
                var email = document.formulaire_inscription.email.value;
                var verif = /^[a-zA-Z0-9_-]+@[a-zA-Z0-9-]{2,}[.][a-zA-Z]{2,3}$/
                if (verif.exec(email) == null)
                {
                alert("Votre email est incorrecte");
                return false;
                }
                else
                return email;
                }
                </script>
                </HEAD>
                <body>
                <form method="post" action="formvalide.php" name="formulaire_inscription" onsubmit= validation();>

                <tr><td><b><i>E_mail</i></b></td><td><input type="text" name="email" id="email" size="20"/></td></tr>
                </form>
                </body>
                1. ce code me donne un message d'erreur mais valide quand meme le formulaire
                  1. Contributeur
                    ça doit être les guillemets autour de l'appel de fonction :
                    <form method="post" action="formvalide.php" name="formulaire_inscription" onsubmit="validation();"> 
                    1. Contributeur
                      ah oui, il manque le "return" !
                      <form method="post" action="formvalide.php" name="formulaire_inscription" onsubmit="return validation();"> 
                      1. Merci dalida pour ton assistance,

                        mais ca ne marche toujours meme pas avec les guillemets, si je mets un email valide, le formulaire se valide, et quand je mets un email non valide, je recois un message d'erreur comme quoi l'email n'est pas valide, et quand j'appuie ok, et ca continue "formvalide" :s
                        1. Contributeur
                          tu as lu le <16> ?
                      2. c moi qui a ecrit le 16
                        1. Contributeur
                          lol, je parlais du <15>…

                          tu as bien ajouté le "return" ?
                      3. AH OUIIIIIIIIII, CA MARCHE avec le return;

                        merci merci merci dalida, ca marche,

                        quand l'email n'est pas valide , il ne passe pas, on reste sur la meme page,

                        quand il est valide ca passe,

                        merci
                        1. Contributeur
                          et dans ta fonction, le <input/> et sa valeur sont bien définis ?

                          ajoute une alerte :
                          var email = document.formulaire_inscription.email.value; 
                          alert(email);
                          1. Contributeur
                            ah ben voilà !

                            t'as trouvé pour le checkbox ?
                            y a plus qu'à l'ajouter à ta fonction !
                            • 1
                            • 2