Accueil de Gladir.com Notes légales de Gladir.com Flux RSS des nouvelles du site Gladir.com - Langage de programmation - Perl - Validation - Courriel Section du logiciel DOS «MonsterBook» Inventaire de la bibliothèque de Gladir.com Entrée administrateur

La validation des courriels est un des problèmes les plus complexe à mettre en oeuvre lorsqu'on envoie un formulaire. Et pour cause, il faut tenir compte des règles suivantes :

  • Un courriel doit contenir exactement un arobas (@),
  • Le nom de domaine, situé après l'arobas (@) contient un point (.),
  • Seul certains code de caractères sont acceptés.
A l'aide du code source Perl suivant, vous trouverez la réponse que vous souhaitez :
  1. #!/usr/bin/perl
  2.  
  3. sub IsEmail($) {
  4.     my($Email) = @_;
  5.     my ($ArobasFound,$AfterArobas,$I);
  6.     if(length($Email) == 0) {
  7.          return FALSE;
  8.     }
  9.     for($I = 0; $I < length($Email); $I++) {
  10.           if(substr($Email,$I,1) eq ' ') { return FALSE; }
  11.           elsif(substr($Email,$I,1) eq '\t') { return FALSE; }
  12.           elsif(substr($Email,$I,1) eq '\n') { return FALSE; }
  13.           elsif(substr($Email,$I,1) eq '\r') { return FALSE; }
  14.           elsif(substr($Email,$I,1) eq '(') { return FALSE; }
  15.           elsif(substr($Email,$I,1) eq ')') { return FALSE; }
  16.           elsif(substr($Email,$I,1) eq ':') { return FALSE; }
  17.           elsif(substr($Email,$I,1) eq ',') { return FALSE; }
  18.           elsif(substr($Email,$I,1) eq '/') { return FALSE; }
  19.           elsif(substr($Email,$I,1) eq '\'') { return FALSE; }
  20.           elsif(substr($Email,$I,1) eq '\"') { return FALSE; }
  21.           elsif(substr($Email,$I,1) eq '~') { return FALSE; }
  22.           elsif(substr($Email,$I,1) eq '`') { return FALSE; }
  23.           elsif(substr($Email,$I,1) eq '!') { return FALSE; }
  24.           elsif(substr($Email,$I,1) eq '#') { return FALSE; }
  25.           elsif(substr($Email,$I,1) eq '$') { return FALSE; }
  26.           elsif(substr($Email,$I,1) eq '%') { return FALSE; }
  27.           elsif(substr($Email,$I,1) eq '^') { return FALSE; }
  28.           elsif(substr($Email,$I,1) eq '&') { return FALSE; }
  29.           elsif(substr($Email,$I,1) eq '*') { return FALSE; }
  30.           elsif(substr($Email,$I,1) eq '+') { return FALSE; }
  31.           elsif(substr($Email,$I,1) eq '=') { return FALSE; }
  32.           elsif(substr($Email,$I,1) eq '[') { return FALSE; }
  33.           elsif(substr($Email,$I,1) eq ']') { return FALSE; }
  34.           elsif(substr($Email,$I,1) eq '{') { return FALSE; }
  35.           elsif(substr($Email,$I,1) eq '}') { return FALSE; }
  36.           elsif(substr($Email,$I,1) eq '|') { return FALSE; }
  37.           elsif(substr($Email,$I,1) eq '\\') { return FALSE; }
  38.           elsif(substr($Email,$I,1) eq '?') { return FALSE; }
  39.           elsif(substr($Email,$I,1) eq '<') { return FALSE; }
  40.           elsif(substr($Email,$I,1) eq '>') { return FALSE; }
  41.     }
  42.  
  43.      for($ArobasFound = 0, $I = 1; $I < length($Email); $I++) {
  44.           if(substr($Email,$I,1) eq '@') {
  45.           $ArobasFound++;
  46.           if($ArobasFound == 1) {
  47.              $AfterArobas = $I;
  48.           }
  49.         }
  50.      }
  51.  
  52.     if($ArobasFound != 1) {
  53.         return FALSE;
  54.     }
  55.  
  56.     $AfterArobas += 2;
  57.     while (($AfterArobas < length($Email)) && (substr($Email,$AfterArobas,1) ne '.')) {
  58.         $AfterArobas++;
  59.     }
  60.  
  61.     if(($AfterArobas >= length($Email) - 1) || (substr($Email,$AfterArobas,1) ne '.')) {
  62.         return FALSE;
  63.     } else {
  64.         return TRUE;
  65.     }
  66. }
  67.  
  68. print "Courriel «abc» est valide: ".&IsEmail("abc")."\n";
  69. print "Courriel «\@» est valide: ".&IsEmail("\@")."\n";
  70. print "Courriel «\@abc.abc» est valide: ".&IsEmail("\@abc.abc")."\n";
  71. print "Courriel «abc\@gladir.com» est valide: ".&IsEmail("abc\@gladir.com")."\n";
  72. print "Courriel «abc\@\@gladir.com» est valide: ".&IsEmail("abc\@\@gladir.com")."\n";
  73. print "Courriel «abc\@gl][adir.com» est valide: ".&IsEmail("abc\@gl][adir.com")."\n";
on obtiendra le résultat suivant:
Courriel «abc» est valide: FALSE
Courriel «@» est valide: FALSE
Courriel «@abc.abc» est valide: FALSE
Courriel «abc@gladir.com» est valide: TRUE
Courriel «abc@@gladir.com» est valide: FALSE
Courriel «abc@gl][adir.com» est valide: FALSE

Dernière mise à jour: Jeudi, le 18 juin 2009