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 :

test du mail dans un formulaire


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 120
    Points : 83
    Points
    83
    Par défaut test du mail dans un formulaire
    Bonjour je fait appel à vous car je n'arrive pas à tester une adresse mail dans un formulaire,
    j'ai un script javascript qui vérifie que les champs ont été remplis que la syntaxe du numéro et de l'email sont valides et je bloque pour le test du domaine du mail.
    J'ai trouvé un script sur le net mais en php et je ne sais pas comment l'adapter alors un petit coup de mains serait le bienvenue.
    Merci par avance

    voici les script: le javascript
    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
    90
    91
    92
    93
    <script language="JavaScript">
    function check(f)
    {
      // Avant l'envoi du formulaire, plusieurs variables
      // doivent être vérifiées.
      // En cas d'erreur, l'utilisateur est averti
      // par un message.
      // D'abord, nous déterminons si une zone de texte est vide.
      if(document.contact.last_name.value == '')
      {
    	document.contact.last_name.style.backgroundColor = "#F3C200";
        alert('Indiquez votre nom, SVP.');
        return(false);
      }
      if(document.contact.tel.value == '')
      {
    	document.contact.tel.style.backgroundColor = "#F3C200";
        alert('Indiquez votre numéro de téléphone, SVP.');
        return(false);
      }
     if(document.contact.email.value == '')
      {
    	document.contact.email.style.backgroundColor = "#F3C200";
    	document.contact.email.value = ""
        alert('Indiquez votre adresse E-Mail, SVP.');
        return(false);
      }
     
      // Puis nous vérifions si le numéro de téléphone
      // contient des caractères interdits. Une boucle for
      // vérifie individuellement chaque caractère.
      var s;
      for(var i = 0; i < document.contact.tel.value.length; i++)
      {
        // le caractuel est stocké dans s.
        s = document.contact.tel.value.charAt(i);
        // Caractères valides : espace, parenthèses, "/", "-" et "+".
        if( !((s >= 0) && (s <= 9))
         && (s != ' ') && (s != '-') && (s != '+')
         && (s != '/') && (s != '(') && (s != ')'))
        {
          alert('Le numéro de téléphone ne peut comporter que des chiffres, '
           + 'espaces, parentheses, "/", "-" et "+".');
          return(false);
        }
      }
      if (document.contact.tel.value.length < 10)
       {
          alert('Le numéro de téléphone ne peut comporter que 10 chiffres');
          return(false);
        }
      // Puis nous recherchons des espaces dans l'adresse e-mail
      // '-1' signifie qu'aucun espace n'a été trouvé.
      if(document.contact.email.value.search(/ /) != '-1')
      {
        alert('Une adresse e-mail ne peut contenir un espace !');
        return(false);
      }
      // Pour finir, nous vérifions le format. 
      // Pour cela, nous fractionnons l'adresse en deux.
      // (avant et après le caractère"@"
      s = document.contact.email.value.split(/@/);
      adresse = document.contact.email.value;
      taille = document.contact.email.value.length;
      validelog = false;
    // on extrait le 'login' (ce qui se situe avant l'arobace)
      arob = adresse.lastIndexOf(".");
      login = adresse.substring(0,arob);
      if ( login.length > 2 ) {
    		validelog = true;
    		}
    	else {
    		alert('Une adresse e-mail doit avoir le format "Utilisateur@Domain.fr",\n'
         +'par ex.: "mail"');
    		validelog = false;
    		}
    	if ( validelog == true ) {
    		return true;
    		}
    	else {
    		return false;
    		}
      // Avec un seul caractère "@" il ne peut y avoir que deux parties.
      if((s.length != 2) || s[0] == '' || s[1] == '')
      {
        alert('Une adresse e-mail doit avoir le format "Utilisateur@Domain",\n'
         +'par ex.: "mail"');
        return(false);
      }
      return(true);
    }
    //--></script>
    <form name="contact" action="index.php?page=sendMail" method="POST" onSubmit="return(check(this));"></form><

    et le php :
    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
    <?php
         function emailCheck($email, &$err) {
         if ($email == "") {
         $err = "L'email est vide";
         return false;
         }
        
         if (!preg_match("/^[-a-z0-9\._]+@[-a-z0-9\.]+\.[a-z]{2,4}$/i", $email)) {
         $err = "Le format de l'email n'est pas valide";
         return false;
         }
        
         list($nom, $dom) = explode("@", $email); // On récupère le nom de domaine dans la variable $dom
        
         if (!checkdnsrr($dom) == $dom) { // si vous n'êtes pas sous Windows, vous pouvez utiliser directement la condition (!checkdnsrr($dom))
         $err = "Ce nom de domaine n'existe pas";
         return false;
         }
         return true;
         }
         ?>
         <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
         "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
         <html>
         <head>
         <title>Test de validité d'e-mail</title>
         </head>
         <body bgcolor="red">
         <form action="Test_Mail.php" method="post">
         <input type="text" name="semail" value="<?php echo $semail ?>">
         <input type="submit" value="Valider cet email">
         <?php
         if (isset($semail)) {
         ?>
         <hr>
         Résultat :<br>
         <?php
         if (emailCheck($semail, $err))
         echo "Cette adresse email est valide";
         else
         echo "Erreur : " . $err;
         }
         ?>
         </form>
         </body>
         </html>
    C'est la partie en gras qui m'interresse...

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Points : 709
    Points
    709
    Par défaut
    Déjà, tu as un gros problème au niveau du type de variables que tu compares... ou de la syntaxe.
    Tu as :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (!checkdnsrr($dom) == $dom) {
      ...
    }
    Ton test signifie : si on n'a (NON checkdnsrr($dom)) égal à $dom, alors...
    Tu compares donc un booléen (checkdnsrr($dom)) à une chaîne ($dom). En d'autres termes, ça ne peut pas fonctionner.

    Quelque chose d'un peu plus logique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (checkdnsrr($dom)) {
      // Code si le domaine a été trouvé
    } else {
      // Code si le domaine n'a pas été trouvé
    }
    Le commentaire me paraît assez bizarre également, puisque la fonction checkdnsrr() n'est pas censée exister sous Windows. La doc de la fonction conseille d'aller voir du côté de PEAR et Net_DNS.

    Pour passer à ta question de traduction en JavaScript... je sais qu'il existe des fonctions pour savoir si un fichier existe, mais pour un domaine, je ne sais pas.
    Dans la mesure où les scripts sont bloqués sur certaines machines, dans quelle mesure est-il vraiment nécessaire de le faire en JavaScript ?
    « Se demander si un ordinateur peut penser est aussi intéressant que de se demander si un sous-marin peut nager. »
    -- Edsger Dijkstra

Discussions similaires

  1. Vérification d'adresse mail dans un formulaire
    Par kykyboogy dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 15/01/2009, 18h07
  2. [A-03] Bouton Mail dans un formulaire access
    Par The Ditch dans le forum IHM
    Réponses: 6
    Dernier message: 04/01/2009, 21h05
  3. Format mail dans un formulaire (again)
    Par Tellounet dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 25/06/2008, 09h43
  4. vérification d'une adresse mail dans un formulaire via une regexp
    Par mattstriker dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 11/04/2008, 19h12
  5. Vérif de champs et de mail dans un formulaire
    Par jlb59 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 03/07/2007, 18h32

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