Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/07/2008, 11h49   #1
Membre du Club
 
Inscription : février 2007
Messages : 120
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 120
Points : 49
Points : 49
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 :
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 :
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...
riderfun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2008, 11h40   #2
Membre chevronné
 
Homme Alban
Inscription : juin 2006
Messages : 630
Détails du profil
Informations personnelles :
Nom : Homme Alban
Âge : 26
Localisation : France, Essonne (Île de France)

Informations forums :
Inscription : juin 2006
Messages : 630
Points : 602
Points : 602
Déjà, tu as un gros problème au niveau du type de variables que tu compares... ou de la syntaxe.
Tu as :
Code :
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 :
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
alband85 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h43.


 
 
 
 
Partenaires

Hébergement Web