begin process at 2010 03 20 09:05:32
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Formulaire

 > VERIFICATEUR DU FORMAT DE L'EMAIL

VERIFICATEUR DU FORMAT DE L'EMAIL


 Information sur la source

Note :
10 / 10 - par 3 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Formulaire Niveau :Débutant Date de création :06/02/2003 Date de mise à jour :04/07/2003 18:47:30 Vu / téléchargé :12 067 / 415

Auteur : apxa

Ecrire un message privé
Site perso
Commentaire sur cette source (34)
Ajouter un commentaire et/ou une note

 Description

Je n'ai pas vérifier si qq1 avait déja déposé une source qui fait ca mais bon j'en ai fait une vite fait pour mon ami VBEdit :)

La fonction renvoi vrai si l'email est valide sinon faux.  


!!! REMARQUE:

!!! Et pour les petits malins qui vont me sortir: "oui y a RegExp(....)" je ne pense pas qu'il soit trés modulable dans le manière de coder et qu'il n'ont rien a foutre ici car j'ai autre chose a foutre que leur expliquer que si je sort un code aussi long c pour ca portabilité et non pour son optimisation !!!

!!! De plus par rapport à la rapidité : comme excuse c'est un peu merdique.
Je ne pense pas qu'a l'oeil nu pour une simple vérification d'email dans un formulaire, on voit rééllement la différence. !!!

Donc pour les newbees qui viennent juste pour sortir leurs nouvelle lecons de javascript avec leurs nouvelles fonctions: je dis TG.

Et pour ce qui concerne la norme W3C allez vous plaindre à microsoft, netscape, et mac qui n'ont pas l'air d'avoir le même point de vue à se sujet !

Pensez du jour: "Derrière un code qui semblerait obsolete peut se cacher un très grand développeur... mais derrière un code optimisé, peut se cacher aussi une grosse merde...
On n'a pas toujours le choix dans le developpement de ses applications...
Donc réflechir à 2 fois avant de sortir des commentaires."    

Source

  • /**** Début de fonction : verifEmail ****/
  • // Entrée : mail - (String) - Email à analysé.
  • // Renvoyé : true ou false - (Boolean) - Vrai si l'email est correct sinon Faux
  • function verifEmail(mail) {
  • /*** Début de déclaration de variable ***/
  • //var de retour boolean true ou false
  • var ret = true;
  • //var où l'on stock le caractère courant au fur et a mesure de l'analyse
  • var car = "";
  • //var où l'on stock le caractère place avant le @
  • var carAfter = "";
  • //var où l'on stock le caractère place après le @
  • var carBefore = "";
  • //var où l'on stock le nombre de caractères total
  • var nbrcar = mail.length;
  • //var où l'on stock le nombre de @ trouvé
  • var nbrarobase = 0;
  • //var où l'on stock le nombre de . trouvé
  • var nbrpoint = 0;
  • //var définissant les caractères authorisés
  • var goodcar = "@0123456789.-_abcdefghijklmnopqrstuvwxyz";
  • /*** Fin de déclaration de variable ***/
  • /*** Début de boucle de l'analyse ***/
  • for(cnt=0;cnt<nbrcar;cnt++) {
  • //Récupération du caractère courant
  • var car = mail.substr(cnt,1);
  • /** Début de l'analyse du caractère courant **/
  • //Si le caractère est authorisé
  • if(goodcar.indexOf(car) >= 0) {
  • //On initialise les variables carAfter et carBefore à vide
  • carAfter = "";
  • carBefore = "";
  • /* Début de l'analyse du @ */
  • //Si le caractère est @
  • if(car == "@") {
  • //Si le @ n'est pas le premier
  • if((cnt-1) >= 0) {
  • //Récupération du caractère placé avant le @
  • carBefore = mail.substr((cnt-1),1);
  • }
  • //Si le @ n'est pas le dernier
  • if((cnt+1)<nbrcar) {
  • //Récupération du caractère placé après le @
  • carAfter = mail.substr((cnt+1),1);
  • }
  • //Si toutes les condition de @ sont respectées
  • //conditions:
  • // - cnt>0 : n'est pas placé en première position
  • // - nbrarobase==0 : est unique
  • // - cnt<(nbrcar-4) : se trouve à une position max de 5 avant la fin
  • // (sachant que les domaines les plus petit sont : a.fr par ex.)
  • // - !(carBefore==".") : qu'il n'y est pas de . avant le @
  • // - !(carAfter==".") : qu'il n'y est pas de . après le @
  • // - !(carBefore=="-") : qu'il n'y est pas de - avant le @
  • // - !(carAfter=="-") : qu'il n'y est pas de - après le @
  • // - !(carBefore=="_") : qu'il n'y est pas de _ avant le @
  • // - !(carAfter=="_") : qu'il n'y est pas de _ après le @
  • if(cnt>0 && nbrarobase==0 && cnt<(nbrcar-4) && !(carBefore==".") && !(carAfter==".") && !(carBefore=="-") && !(carAfter=="-") && !(carBefore=="_") && !(carAfter=="_")) {
  • //On incrémente le @
  • nbrarobase++;
  • } else {
  • //Affectation Faux à la var de retour
  • ret = false;
  • //On sort de la boucle
  • break;
  • }
  • }
  • /* Fin de l'analyse du @ */
  • /* Début de l'analyse du . */
  • //Si le caractère est .
  • if(car == ".") {
  • //Si le . n'est pas le premier
  • if((cnt-1) >= 0) {
  • //Récupération du caractère placé avant le .
  • carBefore = mail.substr((cnt-1),1);
  • }
  • //Si le . n'est pas le dernier
  • if((cnt+1)<nbrcar) {
  • //Récupération du caractère placé après le .
  • carAfter = mail.substr((cnt+1),1);
  • }
  • //Si toutes les condition de @ sont respectées
  • //conditions:
  • // - cnt>0 : n'est pas placé en première position
  • // - cnt<(nbrcar-2) : se trouve à une position max de 3 avant la fin
  • // (sachant que les domaines les plus petit sont : a.fr par ex.)
  • // - !(carBefore==".") : qu'il n'y est pas de . avant le .
  • // - !(carAfter==".") : qu'il n'y est pas de . après le .
  • // - !(carBefore=="-") : qu'il n'y est pas de - avant le .
  • // - !(carAfter=="-") : qu'il n'y est pas de - après le .
  • // - !(carBefore=="_") : qu'il n'y est pas de _ avant le .
  • // - !(carAfter=="_") : qu'il n'y est pas de _ après le .
  • if(cnt>0 && cnt<(nbrcar-2) && !(carBefore==".") && !(carAfter==".") && !(carBefore=="-") && !(carAfter=="-") && !(carBefore=="_") && !(carAfter=="_")) {
  • //On incrémente le .
  • nbrpoint++;
  • } else {
  • //Affectation Faux à la var de retour
  • ret = false;
  • //On sort de la boucle
  • break;
  • }
  • }
  • /* Fin de l'analyse du . */
  • } else {
  • //Affectation Faux à la var de retour
  • ret = false;
  • //On sort de la boucle
  • break;
  • }
  • /*** Fin de l'analyse du caractère courant ***/
  • }
  • /*** Fin de boucle de l'analyse ***/
  • /*** Début de l'analyse du nombre de @ et de . ***/
  • //Si il n'y a aucun @ et aucun .
  • //Si le 1er et le dernier caractère est .
  • //Si le 1er et le dernier caractère est -
  • //Si le 1er et le dernier caractère est _
  • 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) == "_") {
  • //Affectation Faux à la var de retour
  • ret = false;
  • }
  • /*** Fin de l'analyse du nombre de . et de @ ***/
  • //Renvoi de la valeur de la var de retour
  • return ret;
  • }
  • /**** Fin de fonction : verifEmail ****/
/**** Début de fonction : verifEmail ****/
// Entrée : mail - (String) - Email à analysé.
// Renvoyé : true ou false - (Boolean) - Vrai si l'email est correct sinon Faux

function verifEmail(mail) {

  /*** Début de déclaration de variable ***/
  //var de retour boolean true ou false
  var ret = true;
  //var où l'on stock le caractère courant au fur et a mesure de l'analyse
  var car = "";
  //var où l'on stock le caractère place avant le @
  var carAfter = "";
  //var où l'on stock le caractère place après le @
  var carBefore = "";
  //var où l'on stock le nombre de caractères total
  var nbrcar = mail.length;
  //var où l'on stock le nombre de @ trouvé
  var nbrarobase = 0;
  //var où l'on stock le nombre de . trouvé
  var nbrpoint = 0;
  //var définissant les caractères authorisés
  var goodcar = "@0123456789.-_abcdefghijklmnopqrstuvwxyz";
  /*** Fin de déclaration de variable ***/

  /*** Début de boucle de l'analyse ***/
  for(cnt=0;cnt<nbrcar;cnt++) {

    //Récupération du caractère courant
    var car = mail.substr(cnt,1);

    /** Début de l'analyse du caractère courant **/
    //Si le caractère est authorisé
    if(goodcar.indexOf(car) >= 0) {

      //On initialise les variables carAfter et carBefore à vide
      carAfter = "";
      carBefore = "";

      /* Début de l'analyse du @ */
      //Si le caractère est @
      if(car == "@") {


        //Si le @ n'est pas le premier
        if((cnt-1) >= 0) {

          //Récupération du caractère placé avant le @
          carBefore = mail.substr((cnt-1),1);
        }

        //Si le @ n'est pas le dernier
        if((cnt+1)<nbrcar) {

          //Récupération du caractère placé après le @
         carAfter = mail.substr((cnt+1),1);
        }

        //Si toutes les condition de @ sont respectées
        //conditions:
        //    - cnt>0                 : n'est pas placé en première position
        //    - nbrarobase==0   : est unique
        //    - cnt<(nbrcar-4)     : se trouve à une position max de 5 avant la fin
        //      (sachant que les domaines les plus petit sont : a.fr par ex.)
        //    - !(carBefore==".") : qu'il n'y est pas de . avant le @
        //    - !(carAfter==".")   : qu'il n'y est pas de . après le @
        //    - !(carBefore=="-") : qu'il n'y est pas de - avant le @
        //    - !(carAfter=="-")   : qu'il n'y est pas de - après le @
        //    - !(carBefore=="_") : qu'il n'y est pas de _ avant le @
        //    - !(carAfter=="_")   : qu'il n'y est pas de _ après le @
        if(cnt>0 && nbrarobase==0 && cnt<(nbrcar-4) && !(carBefore==".") && !(carAfter==".") && !(carBefore=="-") && !(carAfter=="-") && !(carBefore=="_") && !(carAfter=="_")) {

          //On incrémente le @
          nbrarobase++;
        } else {

         //Affectation Faux à la var de retour
         ret = false;
         //On sort de la boucle 
         break;
        }
      }
      /* Fin de l'analyse du @ */

      /* Début de l'analyse du . */
      //Si le caractère est .
      if(car == ".") {

        //Si le . n'est pas le premier
        if((cnt-1) >= 0) {

          //Récupération du caractère placé avant le .
          carBefore = mail.substr((cnt-1),1);
        }

        //Si le . n'est pas le dernier
        if((cnt+1)<nbrcar) {

          //Récupération du caractère placé après le .
         carAfter = mail.substr((cnt+1),1);
        }

        //Si toutes les condition de @ sont respectées
        //conditions:
        //    - cnt>0                 : n'est pas placé en première position
        //    - cnt<(nbrcar-2)     : se trouve à une position max de 3 avant la fin
        //      (sachant que les domaines les plus petit sont : a.fr par ex.)
        //    - !(carBefore==".") : qu'il n'y est pas de . avant le .
        //    - !(carAfter==".")   : qu'il n'y est pas de . après le .
        //    - !(carBefore=="-") : qu'il n'y est pas de - avant le .
        //    - !(carAfter=="-")   : qu'il n'y est pas de - après le .
        //    - !(carBefore=="_") : qu'il n'y est pas de _ avant le .
        //    - !(carAfter=="_")   : qu'il n'y est pas de _ après le .
        if(cnt>0 && cnt<(nbrcar-2) && !(carBefore==".") && !(carAfter==".") && !(carBefore=="-") && !(carAfter=="-") && !(carBefore=="_") && !(carAfter=="_")) {

          //On incrémente le .
          nbrpoint++;
        } else {

          //Affectation Faux à la var de retour 
          ret = false;
          //On sort de la boucle 
          break;
        }
      }
      /* Fin de l'analyse du . */

    } else {

      //Affectation Faux à la var de retour 
      ret = false;
      //On sort de la boucle 
      break;
    }
    /*** Fin de l'analyse du caractère courant ***/
  }
  /*** Fin de boucle de l'analyse ***/

  /*** Début de l'analyse du nombre de @ et de . ***/
  //Si il n'y a aucun @ et aucun .
  //Si le 1er et le dernier caractère est .
  //Si le 1er et le dernier caractère est -
  //Si le 1er et le dernier caractère est _
  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) == "_") {

    //Affectation Faux à la var de retour 
    ret = false;
  }
  /*** Fin de l'analyse du nombre de . et de @ ***/

  //Renvoi de la valeur de la var de retour
  return ret;
}
/**** Fin de fonction : verifEmail ****/   

 Conclusion

Cette fonction peut aussi ce mettre dans Flash 5 et Flash 6 (en action script)

appel :

if(verifEmail("webmaster@apxa.com")) {
  alert("mail ok");
} else {
  alert("mail error");
}

Dans le zip un page de test disponible pour les comparatifs du code de samgoa et du mien.
le 1er c le mien le 2eme c le sien.
Bon travail samgoa :)

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture GESTION DE CONTROLE DE FORMULAIRE OU DONNÉES CENTRALISÉ.
Source avec Zip CRÉATION D'UNE 2ÈME LISTE EN FONCTION DE LA SÉLECTION D'UNE ...

 Sources de la même categorie

DÉSACTIVER UN BOUTON SUBMIT APRÈS ENVOI DU FORMULAIRE par SoftDeath
IMPLEMENTATION DE RANDOM PERSONNALISÉ par ousous
IMPLEMENTATION DE HASHTABLE par ousous
JAVASCRIPT.UTIL.ITERATOR par ousous
Source avec Zip Source avec une capture PALETTE DE COULEURS par titnome

Commentaires et avis

Commentaire de HEproduct le 06/02/2003 20:28:34

loool :) miciii mon titi hé hé trés bon ton code,
Voilà comment en 5 minutes on fé une bonne vérif de mail les zamis c le temps k'a mi Apxa à nous pondre ce code alors soyer un peu moins raleur pour une fois et fêtes pareill loool :)
AngelWide

Commentaire de ByanSpinder le 07/02/2003 13:36:07

Je ne veux pas te vexer mais je trouve cela un peu idiot, car il existe les RegExp qui raccourcirai considérablement ton code!
Code:
var e=New regExp('^[a-z,A-Z,0-9,-,.]{1,}@[a-z,A-Z,0-9,-,.]{1,}.[a-z,A-Z]{3}');
if(!e.test(tonmailatester)){return(false);}
voilà c'est tout

Commentaire de apxa le 07/02/2003 16:14:43

ByanSpinder essaye de faire tourner ton regExp sous ie5 de mac et reviens me faire tes commentaires après merci.

Commentaire de HEproduct le 13/02/2003 10:39:55

lol Apxa T le meilleur :) hé hé Bravo !!!!

Commentaire de PereNoel le 13/02/2003 19:03:32

Houlala ! Ca vanne sec dans le coin ! mdrrrr

Commentaire de erika le 13/02/2003 19:36:09

En réponse a Byan Spinder:
le jour où tu arrivera à faire le quart de ce que titi arrive a faire tu pourra te permettre de faire un commentaire, en attendant tu prend tes bouquins et t'apprend à programmer !
De plus, tu te permet de dire que tu "trouve cela un peu idiot" , moi je trouve ça encore plus idiot un mec qui se permet de faire un commentaire négatif sur un code alors qu'il ne serait même pas capable de le faire ce code soit disant "idiot".

Pour résumé : laisse faire les pro!
Ps: Titi t'es le meilleure, tu l'as toujours été et tu le seras toujours!

Commentaire de crapulemaster le 14/02/2003 12:40:07

En réponse à tous
Même si titi roule dans une caisse de vieux, il est bon programmeur
Celui qui touche à titi aura à faire à son maître crapulien incontesté....la crapule master !!

Commentaire de Optitech le 17/02/2003 11:27:48

VOICI UN VERIFICATEUR DU FORMAT DE L'EMAIL BEAUCOUP PLUS SIMPLE QUE LE TIENT !!!!!

&lt;html&gt;&lt;head&gt;&lt;title&gt;Valider une adresse e-mail&lt;/title&gt;
&lt;script language = "JavaScript"&gt;
&lt;!-- hide me
function verifierEmail(adresse_email)
{
    var arobase = adresse_email.indexOf("@");
    var point_adresse = adresse_email.lastIndexOf(".");
    var espace = adresse_email.indexOf(" ");
    if ((arobase != -1) &&  // présence de '@'
        (arobase != 0) &&  // à une position autre que  0
        (point_adresse != -1) && // présence d'un '.'
        (point_adresse &gt; arobase + 1) &&  // et de qqchose entre '@' et '.'
        (point_adresse &lt; adresse_email.length - 1) && // et de qqchose après de '.'
        (espace  == -1))  // pas d'espaces
     {
             alert("L'adresse e-mail est valide !");
             return true;
     }  else {
             alert("L'adresse e-mail est erronée !");
             return false;
     }
}
// show me --&gt;
&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;form method="POST" action="#"
    onSubmit = "var result = verifierEmail(this.champ_email.value); return result;"&gt;
  Adresse e-mail :
  &lt;input type="text" name = "champ_email"&gt;&lt;br&gt;
  &lt;input type="submit" value="Valider !"&gt;
&lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;


A+

Commentaire de apxa le 17/02/2003 12:37:52

J'ai tester ton code et escuse moi mais t@t.f, ..titi.@c.f, t@@t.f@, ne sont po des format d'email valide donc VA APPRENDRE A PROGRAMMEZ !!!
C'est honteux de ta part de poser ce commentaire dans mon code !!
Je n'ai meme pas osé pousser mes tests avec ton code...
Je sais pas si tu sais lire mais y a une remarque en haut !

Commentaire de pyroflo le 22/04/2003 00:43:11

ooooooooo les gars on se calme là !!!
apxa je peux pas juger ton code puisque je ne sais pas le faire mais je trouve que mépriser quelqu'un comme tu l'as fait avec Optitech n'est vraiment pas correct !!! A chacun son niveau, plus ou moins élevé. Et même si on est un "newbee" on a le droit de s'exprimer en postant pourquoi pas des sources du même style que la tienne. Tu ne te souviens pas quand tu as commencé à programmer ?
Alors au lieu de te la jouer grand programmeur (que tu es peut être) respecte un peu les autres ça ne te fera pas de mal...

Commentaire de apxa le 22/04/2003 15:04:15

Pyroflo,
je respect tout à fait le travail des autres mais je ne support pas les commentaires à la va vite.
Sans prises en considération des commentaires précédement inscrite.
De plus ce code n'a rien de très avancés.
L'avantage c'est qu'il fonctionne par tout (test non effectuer sous opéra).
De plus je ne suis pas contre des sources identiques mais alors que le gars le post sous son pseudo et non sous le mien.
Car ca je trouve c'est un peu comme de la flambe ("moi je sais faire plus court, moi je sais faire plus simple...") et derrière il n'y a aucune vérification.
Les gars se contente de balancer le code qu'ils viennent d'apprendre en pensant qu'ils ont affaire à un concours.
Hors le but et comme même de fournir des sources qui fonctionnent quelques soit l'utilisation qu'on en fait.
D'où ma froideur dans mes remarque... je sais trop bien comment fonctionne les comments code sources déposées ici. et en majorité elle n'ont rien de constructives.

Commentaire de ByanSpinder le 22/04/2003 15:18:00

En réponse aux accusations !
Non je ne critique pas négativement. Le travail des autres est très instructif. Et si vous prenez la phrase "trouve cela un peu idiot" au premier degré c'est pas de ma faute. Il est vrai que je n'ai pas tester cela sous sous mac, là j'en suis désolé!  Car (je ne suis pas contre non plus) je n'aime pas trop mac. Mais il est vrai que pour que cela marche sur tout web browser, il faut tester! Pour ma part, je ne construit pas de site internet mais que des intranet fonctionnant sous ie PC.
Pas la peine de créer une guerre entre infos, on en a assez avec Saddam et W. Bush.
Allez a+

Commentaire de apxa le 22/04/2003 15:30:41

lol ui c'est vrai c'est pas l'endroit ;)

Commentaire de pyroflo le 22/04/2003 16:53:23

Mouais bon allez STOP !!! Et vive la prog. ;)

Commentaire de Optitech le 22/04/2003 19:09:11

Bien dit pyroflo ! ! !

Commentaire de samgoa le 30/06/2003 15:35:50

Promis, dès que j'ai fini la mienne (de procedure de teste d'e-mail). Je la poste et j'attend les commentaires.

Commentaire de aGlaGla le 03/07/2003 12:08:06

Effectivement c surement bien coder :) Mais qu'est ce sa peu manquer de commentaires :s

Commentaire de apxa le 03/07/2003 12:14:08

c'est vrai dsl...

Commentaire de samgoa le 04/07/2003 09:33:28

ça y est, j'ai fini ma p'tite fonction

http://www.javascriptfr.com/article.aspx?Val=631

Soyez indulgent, c'est 'my first function'.

Commentaire de drjee le 12/11/2003 17:55:43

I found this code quite good for a newbie, but be serious dudes, here is my functions that I transposed from the java.text.SimpleDateFormat class. You will be quiet in all situations with them ! They support all formats for comparison, conversion, etc. so apxa, your code is cool, but much efforts for nothing interesting !! take note dude !




// ------------------------------------------------------------------
// These functions use the same 'format' strings as the
// java.text.SimpleDateFormat class, with minor exceptions.
// The format string consists of the following abbreviations:
//
// Field        | Full Form          | Short Form
// -------------+--------------------+-----------------------
// Year         | yyyy (4 digits)    | yy (2 digits), y (2 or 4 digits)
// Month        | MMM (name or abbr.)| MM (2 digits), M (1 or 2 digits)
// Day of Month | dd (2 digits)      | d (1 or 2 digits)
// Hour (1-12)  | hh (2 digits)      | h (1 or 2 digits)
// Hour (0-23)  | HH (2 digits)      | H (1 or 2 digits)
// Hour (0-11)  | KK (2 digits)      | K (1 or 2 digits)
// Hour (1-24)  | kk (2 digits)      | k (1 or 2 digits)
// Minute       | mm (2 digits)      | m (1 or 2 digits)
// Second       | ss (2 digits)      | s (1 or 2 digits)
// AM/PM        | a                  |
//
// NOTE THE DIFFERENCE BETWEEN MM and mm! Month=MM, not mm!
// Examples:
//  "MMM d, y" matches: January 01, 2000
//                      Dec 1, 1900
//                      Nov 20, 00
//  "M/d/yy"   matches: 01/20/00
//                      9/2/00
//  "MMM dd, yyyy hh:mm:ssa" matches: "January 01, 2000 12:30:45AM"
// ------------------------------------------------------------------

var MONTH_NAMES=new Array('January','February','March','April','May','June','July','August','September','October','November','December','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
function LZ(x) {return(x&lt;0||x&gt;9?"":"0")+x}

// ------------------------------------------------------------------
// isDate ( date_string, format_string )
// Returns true if date string matches format of format string and
// is a valid date. Else returns false.
// It is recommended that you trim whitespace around the value before
// passing it to this function, as whitespace is NOT ignored!
// ------------------------------------------------------------------
function isDate(val,format) {
var date=getDateFromFormat(val,format);
if (date==0) { return false; }
return true;
}

// -------------------------------------------------------------------
// compareDates(date1,date1format,date2,date2format)
//   Compare two date strings to see which is greater.
//   Returns:
//   1 if date1 is greater than date2
//   0 if date2 is greater than date1 of if they are the same
//  -1 if either of the dates is in an invalid format
// -------------------------------------------------------------------
function compareDates(date1,dateformat1,date2,dateformat2) {
var d1=getDateFromFormat(date1,dateformat1);
var d2=getDateFromFormat(date2,dateformat2);
if (d1==0 || d2==0) {
return -1;
}
else if (d1 &gt; d2) {
return 1;
}
return 0;
}

// ------------------------------------------------------------------
// formatDate (date_object, format)
// Returns a date in the output format specified.
// The format string uses the same abbreviations as in getDateFromFormat()
// ------------------------------------------------------------------
function formatDate(date,format) {
format=format+"";
var result="";
var i_format=0;
var c="";
var token="";
var y=date.getYear()+"";
var M=date.getMonth()+1;
var d=date.getDate();
var H=date.getHours();
var m=date.getMinutes();
var s=date.getSeconds();
var yyyy,yy,MMM,MM,dd,hh,h,mm,ss,ampm,HH,H,KK,K,kk,k;
// Convert real date parts into formatted versions
var value=new Object();
if (y.length &lt; 4) {y=""+(y-0+1900);}
value["y"]=""+y;
value["yyyy"]=y;
value["yy"]=y.substring(2,4);
value["M"]=M;
value["MM"]=LZ(M);
value["MMM"]=MONTH_NAMES[M-1];
value["d"]=d;
value["dd"]=LZ(d);
value["H"]=H;
value["HH"]=LZ(H);
if (H==0){value["h"]=12;}
else if (H&gt;12){value["h"]=H-12;}
else {value["h"]=H;}
value["hh"]=LZ(value["h"]);
if (H&gt;11){value["K"]=H-12;} else {value["K"]=H;}
value["k"]=H+1;
value["KK"]=LZ(value["K"]);
value["kk"]=LZ(value["k"]);
if (H &gt; 11) { value["a"]="PM"; }
else { value["a"]="AM"; }
value["m"]=m;
value["mm"]=LZ(m);
value["s"]=s;
value["ss"]=LZ(s);
while (i_format &lt; format.length) {
c=format.charAt(i_format);
token="";
while ((format.charAt(i_format)==c) && (i_format &lt; format.length)) {
token += format.charAt(i_format++);
}
if (value[token] != null) { result=result + value[token]; }
else { result=result + token; }
}
return result;
}

// ------------------------------------------------------------------
// Utility functions for parsing in getDateFromFormat()
// ------------------------------------------------------------------
function _isInteger(val) {
var digits="1234567890";
for (var i=0; i &lt; val.length; i++) {
if (digits.indexOf(val.charAt(i))==-1) { return false; }
}
return true;
}
function _getInt(str,i,minlength,maxlength) {
for (var x=maxlength; x&gt;=minlength; x--) {
var token=str.substring(i,i+x);
if (token.length &lt; minlength) { return null; }
if (_isInteger(token)) { return token; }
}
return null;
}

// ------------------------------------------------------------------
// getDateFromFormat( date_string , format_string )
//
// This function takes a date string and a format string. It matches
// If the date string matches the format string, it returns the
// getTime() of the date. If it does not match, it returns 0.
// ------------------------------------------------------------------
function getDateFromFormat(val,format) {
val=val+"";
format=format+"";
var i_val=0;
var i_format=0;
var c="";
var token="";
var token2="";
var x,y;
var now=new Date();
var year=now.getYear();
var month=now.getMonth()+1;
var date=now.getDate();
var hh=now.getHours();
var mm=now.getMinutes();
var ss=now.getSeconds();
var ampm="";

while (i_format &lt; format.length) {
// Get next token from format string
c=format.charAt(i_format);
token="";
while ((format.charAt(i_format)==c) && (i_format &lt; format.length)) {
token += format.charAt(i_format++);
}
// Extract contents of value based on format token
if (token=="yyyy" || token=="yy" || token=="y") {
if (token=="yyyy") { x=4;y=4; }
if (token=="yy")   { x=2;y=2; }
if (token=="y")    { x=2;y=4; }
year=_getInt(val,i_val,x,y);
if (year==null) { return 0; }
i_val += year.length;
if (year.length==2) {
if (year &gt; 70) { year=1900+(year-0); }
else { year=2000+(year-0); }
}
}
else if (token=="MMM"){
month=0;
for (var i=0; i&lt;MONTH_NAMES.length; i++) {
var month_name=MONTH_NAMES[i];
if (val.substring(i_val,i_val+month_name.length).toLowerCase()==month_name.toLowerCase()) {
month=i+1;
if (month&gt;12) { month -= 12; }
i_val += month_name.length;
break;
}
}
if ((month &lt; 1)||(month&gt;12)){return 0;}
}
else if (token=="MM"||token=="M") {
month=_getInt(val,i_val,token.length,2);
if(month==null||(month&lt;1)||(month&gt;12)){return 0;}
i_val+=month.length;}
else if (token=="dd"||token=="d") {
date=_getInt(val,i_val,token.length,2);
if(date==null||(date&lt;1)||(date&gt;31)){return 0;}
i_val+=date.length;}
else if (token=="hh"||token=="h") {
hh=_getInt(val,i_val,token.length,2);
if(hh==null||(hh&lt;1)||(hh&gt;12)){return 0;}
i_val+=hh.length;}
else if (token=="HH"||token=="H") {
hh=_getInt(val,i_val,token.length,2);
if(hh==null||(hh&lt;0)||(hh&gt;23)){return 0;}
i_val+=hh.length;}
else if (token=="KK"||token=="K") {
hh=_getInt(val,i_val,token.length,2);
if(hh==null||(hh&lt;0)||(hh&gt;11)){return 0;}
i_val+=hh.length;}
else if (token=="kk"||token=="k") {
hh=_getInt(val,i_val,token.length,2);
if(hh==null||(hh&lt;1)||(hh&gt;24)){return 0;}
i_val+=hh.length;hh--;}
else if (token=="mm"||token=="m") {
mm=_getInt(val,i_val,token.length,2);
if(mm==null||(mm&lt;0)||(mm&gt;59)){return 0;}
i_val+=mm.length;}
else if (token=="ss"||token=="s") {
ss=_getInt(val,i_val,token.length,2);
if(ss==null||(ss&lt;0)||(ss&gt;59)){return 0;}
i_val+=ss.length;}
else if (token=="a") {
if (val.substring(i_val,i_val+2).toLowerCase()=="am") {ampm="AM";}
else if (val.substring(i_val,i_val+2).toLowerCase()=="pm") {ampm="PM";}
else {return 0;}
i_val+=2;}
else {
if (val.substring(i_val,i_val+token.length)!=token) {return 0;}
else {i_val+=token.length;}
}
}
// If there are any trailing characters left in the value, it doesn't match
if (i_val != val.length) { return 0; }
// Is date valid for month?
if (month==2) {
// Check for leap year
if ( ( (year%4==0)&&(year%100 != 0) ) || (year%400==0) ) { // leap year
if (date &gt; 29){ return false; }
}
else { if (date &gt; 28) { return false; } }
}
if ((month==4)||(month==6)||(month==9)||(month==11)) {
if (date &gt; 30) { return false; }
}
// Correct hours value
if (hh&lt;12 && ampm=="PM") { hh+=12; }
else if (hh&gt;11 && ampm=="AM") { hh-=12; }
var newdate=new Date(year,month-1,date,hh,mm,ss);
return newdate.getTime();
}


Commentaire de apxa le 13/11/2003 12:12:39

Iop drjee
Are u ok ?
Cause your code test date format and not email format !
Wake up guy !
I dont know if u understand the title but this one mean:
"checking of the format of an address email"
It is probably the time decalage. :p

Commentaire de drjee le 26/11/2003 11:34:23

Ok, u'r right, I cross-posted my functions, sorry for that...

But concerning this thread, the code of optitech is quite perfect, apxa !
Why writting a book as some lines can control a standard, simple email format that is x@x.x ?
In all cases a user who wants to provide a fake address will provide a fake address.... so please stop consuming the internet bandwidth with your best sellers dude... However, u've got a nice face....

Commentaire de snooka le 10/02/2004 14:26:15

Info les page du ZIP CONPORTE DES ERREUR

Commentaire de DieuLePer le 04/07/2005 17:10:52

Bonjour,

Il semblerai qu'il y ai une ptite erreur dans le fichier form.html : à la ligne 156, la fonction verifEmail2() est appelée, or celle-ci n'existe pas. Merci de ne pas me crier dessus ("rester calme et courtois tout au long de vos échanges"), mais je pense que certains newbies n'utilisent pas ce script parce qu'ils ne comprennent pas pourquoi il ne marche pas...

Donc pour ceux qui n'avais pas compris, il faut simplement modifier la ligne 156 en :

if(verifEmail(theMail)) {


Bon week-end

Commentaire de DieuLePer le 04/07/2005 17:12:12

Bonjour,

Il semblerai qu'il y ai une ptite erreur dans le fichier form.html : à la ligne 156, la fonction verifEmail2() est appelée, or celle-ci n'existe pas. Merci de ne pas me crier dessus ("rester calme et courtois tout au long de vos échanges"), mais je pense que certains newbies n'utilisent pas ce script parce qu'ils ne comprennent pas pourquoi il ne marche pas...

Donc pour ceux qui n'avais pas compris, il faut simplement modifier la ligne 156 en :

   function envoi() {
var theMail = document.frm.email.value;
if(verifEmail(theMail)) {
alert("Format OK");
//document.frm.submit();
} else {
alert("Le format de l'email est incorrect !")
}
}


Bon week-end

Commentaire de apxa le 04/07/2005 17:16:51

Salut DLP,
Je te remerci pour cette petite remarque et la petite correction.

Have Fun ;)

Commentaire de citt le 20/09/2005 15:02:52

Bonjour,

Malgré ta fonction, j'ai une ou des personne(s) qui ont reussi a passer en tapant ca
(je n'en ai qui partie car c'est ce qui figurer dans ma BDD) :
zerfz@sdsq.com type="MIME" enctype="multi  etc ....

Je ne sais pas trop a quoi cela correspond mais en tout cas il a reussi a passer :(

Commentaire de apxa le 20/09/2005 15:52:39

Salut,
Citt cumule le script client side avec une vérification avant enregistrement server side.
J'entend par la, un controle du type serveur mx.

Have Fun ;)

Commentaire de yoynco le 19/01/2007 20:22:50

Bravo Apxa, tu déchires mec !!

Commentaire de oufben le 02/05/2007 13:22:48

Mise a part le fait que je n'aime pas l'utilisation du break a tout bout de champ dans une boucle (je titille :P ), le code est impecc ^^

Bravo ^^

Commentaire de oufben le 02/05/2007 14:55:26

une petite remarque cependant...
Si vraiment on veut titiller jusqu'au bout la vérif...
Je suis peut-etre bigleu mais, je n'ai pas vu dans ton code de vérification de la longueur maximale de l'email, car il me semble bien que cette longueur est limitée !
Ainsi, si je rentre une email valide mais de 5000 caracteres dans ta vérif, elle va passer, a moins encore une fois , que j'ai raté qqch lol ;)

Commentaire de 120120 le 05/06/2009 10:54:46

Bonjour,

Merci pour la source, mais une petite question persiste,

Lorsque j'essaie de renseigner ce type de mail < toto@toto.nccsd >, le mail est validé, alors que jusqu'à aujourd'hui il n'est pas possible de renseigner un suffixe de plus de trois caractères.

Donc $regexp = "^([_a-z0-9-]+)(\.[_a-z0-9-]+)*@([a-z0-9-]+)(\.[a-z0-9-]+)*(\.[a-z]{2,4})$"; (désolé) mais cela à le mérite de fonctionner.

Bonne journée

Commentaire de apxa le 05/06/2009 13:28:40

Salut,
A l'époque où j'ai posé la source les expr reg n'étaient pas vraiement au point sur tous les navigateurs.
Ceci dit maintenant ce n'est plus la cas on peut effectivement faire une bonne expr reg pour cela.

si j'ai le temps j'en poserais une. Completer ce contrôle du coté serveur peut aussi s'avérer très utile pour la validité des domaines ou IP.

Essayes d'inclure dans ta regexp ce cas la : email@10.24.134.17

Have Fun ;)

Commentaire de 120120 le 05/06/2009 13:37:27

effectivement avec l'ip ça passe :p

voici une méthode (pas encore finalisé) pour tester un mail via PEAR :

[code]
    function checkEmail( $email, $srv_mail )
    {
        // checks proper syntax
        $regexp = "^([_a-z0-9-]+)(\.[_a-z0-9-]+)*@([a-z0-9-]+)(\.[a-z0-9-]+)*(\.[a-z]{2,4})$";

        if ( !eregi( $regexp, $email ) )
        {
            echo $this->status_div( 1, "Probl&egrave;me de formatage de l'adresse Email !!!" );
            return false;
        }
        // gets domain name
        list( $username, $domain ) = split( '@', $email );
        // checks for if MX records in the DNS
        $mxhosts = array();
        // créer l'objet
        require ( "Net/Ping.php" );
        $ping = Net_Ping::factory();
        // exécuter la commande ping sur l'hôte et afficher la réponse
        if ( !PEAR::isError( $ping ) )
        {
            $response = $ping->ping( $srv_mail );
            // if (eregi('error',$response)) return false;
            if ( PEAR::isError( $response ) )
            {
                echo $this->status_div( 1, "Probl&egrave;me pour joindre le server mail" );
                return false;
            }
            return array( $email );
        }
        return false;
    }
[/code]

Bonne journée

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,655 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales