Javascript: Restreindre un domaine pour un email

Résolu
bigcheek Messages postés 15 Date d'inscription jeudi 30 mai 2002 Statut Membre Dernière intervention 18 octobre 2007 - 16 oct. 2007 à 16:18
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 - 18 oct. 2007 à 14:50
Bonjour à tous,

Je souhaite faire un javascript vérifiant la validité d'une adresse e-mail entrée dans un champ texte.
Là, rien de bien spécial, il est aisé de trouver du code un peu partout sur le net!

En revanche, comment restreindre les domaines "autorisés" ?
Par exemple, si je veux seulement autoriser des adresses "xxx@hotmail.com" et "xxx@yahoo.com"; comment puis-je faire svp ?

Merci d'avance pour  votre aide :)

7 réponses

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
17 oct. 2007 à 15:30
dèjà c'est lastIndexOf()                                                                            
o~~~~~~~~~o~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~o~~~~~~~~~~~~~~~~o 
| Avec | et mieux : Télécharger | 
|~~~~~~~~~|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|~~~~~~~~~~~~~~~~| 
|FireFox |regarder la "console d'erreurs" | FireBug
| | Outils / Console d'erreurs | | 
|~~~~~~~~~|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|~~~~~~~~~~~~~~~~| 
|Internet |utils/options Ile Debogger IE | 
| Explorer| dans la liste, sous "Navigation" : décocher | | 
| | ° Afficher notification erreur script | | 
| | ° Désactiver le débogage autres applications| | 
| | ° Désactiver le débogage Internet Explorer | | 
|~~~~~~~~~|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|~~~~~~~~~~~~~~~~| 
|K-Meleon |regarder la "console d'erreurs" | | 
| | Outils / Console d'erreurs | | 
|~~~~~~~~~|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|~~~~~~~~~~~~~~~~| 
|Opera |regarder la "console d'erreurs" | | 
| | utils / Asole d'erreurs | | 
o~~~~~~~~~o~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~o~~~~~~~~~~~~~~~~o

                                                                           

ensuite, ce que tu vas faire c'est contrôler que hotlail.com existe,
    pas que c'est le "domaine"
car hotlail.com@toto.fr    ça passerait.

recherche le @ ( avec indexOf ou lastIndexOf ou split ) et teste ce qu'il y a derrière,
ou teste les derniers caractères du chsmpa,
ou...
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]<hr />
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
16 oct. 2007 à 16:24
Bonjour,
    tu contrôle que ce qui est après @ est bien = hotmail.com
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
<hr />
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
16 oct. 2007 à 16:27
et pour savoir ce qui est après @
    lastIndexOf ou indexOf + substr ou substring
    ou split (probablement plus simple)
    ou ...
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
<hr />
0
bigcheek Messages postés 15 Date d'inscription jeudi 30 mai 2002 Statut Membre Dernière intervention 18 octobre 2007
17 oct. 2007 à 15:12
Merci pour ta réponse rapide.

J'ai essayé ce que tu me conseilles mais il doit y avoir un problème quelque part car ça ne marche pas :(

Voici le code:

<html>
<head>
</head>

<script language="javascript">

document.write("coucou");

function LectureMail()
{
var adresse = document.critere.email.value ;
var str="hotlail.com";

  if (adresse.lastIndexof(str)!=-1)
  {
    alert("email ok");
  }
  else
  {
    document.write(adresse.lastIndexOf(str) + "
");
    document.write(adresse);
  }

alert("Votre adresse mail est: " + adresse ) ;

}
</script>

<form name='critere' action='sample.asp' >
Entrez votre email:

</form>

</html>

As-tu une idée d'où mon problème peut provenir stp ?

Merci encore
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
17 oct. 2007 à 15:32
de plus...

    document.write(adresse.lastIndexOf(str) + "
");
    document.write(adresse);
  }

un document.write, quand toute la page a été affichée( c'est le cas
ici ), va l'effacer complètement cette page. y compris le javascript.






<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
<hr />
0
bigcheek Messages postés 15 Date d'inscription jeudi 30 mai 2002 Statut Membre Dernière intervention 18 octobre 2007
18 oct. 2007 à 14:35
Bonjour,

Merci beaucoup pour cette aide qui m'a été précieuse.
J'ai résolu mon problème et tout marche parfaitement maintenant.
Je me suis inspiré d'un code trouvé ici pour la vérification de l'adresse e-mail et je l'ai adapté à ma sauce pour la vérification du domaine.

Pour ceux que ça intéresse, je poste mon code:

function verifEmail(mail) {
    var ret=true;
    var car="";
    var carAfter="";
    var carBefore="";
    var nbrcar=mail.length;
    var nbrarobase=0;
    var nbrpoint=0;
    var goodcar="@0123456789.-_abcdefghijklmnopqrstuvwxyz";
  var adresse = document.critere.email.value ;
 
  /* Domaines autorisés */
  var domaine1="hotmail.fr";
  var domaine2="free.fr";
  var domaine3="yahoo.com";
  var domaine4="msn.com";
  var domaine5="aol.com"; 
  var decoupe="";
 
  decoupe = adresse.split("@");
  //alert(decoupe[1]);
   
       
    for(cnt=0;cnt<nbrcar;cnt++) {
        var car=mail.substr(cnt,1);
        if(goodcar.indexOf(car)>=0) {
            carAfter=""; carBefore="";
            if(car=="@") {
                if((cnt-1)>=0) carBefore=mail.substr((cnt-1),1);
                if((cnt+1)<nbrcar) carAfter=mail.substr((cnt+1),1);
                if(cnt>0 && nbrarobase==0 && cnt<(nbrcar-4) && !(carBefore==".") && !(carAfter==".") && !(carBefore=="-") && !(carAfter=="-") && !(carBefore=="_") && !(carAfter=="_")) nbrarobase++;
               
                /*On vérifie le domaine*/
                if (decoupe[1].lastIndexOf(domaine1)==0 || (decoupe[1].lastIndexOf(domaine2)==0) || (decoupe[1].lastIndexOf(domaine3)==0) || (decoupe[1].lastIndexOf(domaine4)==0) || (decoupe[1].lastIndexOf(domaine5)==0))
          {
          alert("domaine ok");
          }

                else {
                    ret=false; break;
                }
            }
            if(car==".") {
                if((cnt-1)>=0) carBefore=mail.substr((cnt-1),1);
                if((cnt+1)<nbrcar) carAfter=mail.substr((cnt+1),1);
                if(cnt>0 && cnt<(nbrcar-2) && !(carBefore==".") && !(carAfter==".") && !(carBefore=="-") && !(carAfter=="-") && !(carBefore=="_") && !(carAfter=="_")) nbrpoint++;
                else {
                    ret=false; break;
                }
            }

           
        } else {
            ret=false; break;
        }
    }
    if(nbrarobase==0 || nbrpoint==0 || mail.substr(0,1)=="." || mail.substr(0,1)=="-" || mail.substr(0,1)=="_" || mail.substr((nbrcar-1),1)=="." || mail.substr((nbrcar-1),1)=="-" || mail.substr((nbrcar-1),1)=="_") ret=false;
    return ret;
}

Merci encore pour votre aide :)
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
18 oct. 2007 à 14:50
probablement intéressant.
mais il traine partout, des exemples avec une expression régulière
plus simple, contrôle meilleur...

function verif_mail(a_mail)
{  var r_mail = /^[A-Za-z0-9._-]+@[A-Za-z0-9.-]{2,}[.][A-Za-z]{2,4}$/
   return( r_mail.exec(a_mail) );
}

il reste à faire le

    var decoupe = adresse.split("@");
    et tester si decoupe[1] est autorisé
    ( contenu dans un array par exemple )




<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
<hr />
0
Rejoignez-nous
A voir également