Accueil de Gladir.com Notes légales de Gladir.com Flux RSS des nouvelles du site Gladir.com - Langage de programmation - C - 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 C suivant, vous trouverez la réponse que vous souhaitez :

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. char * BoolToString(int value) {
  6.      return value?"true":"false";
  7. }
  8.  
  9. int IsEmail(const char * Email) {
  10.     unsigned int ArobasFound,AfterArobas=0,I;
  11.     if(strlen(Email) == 0) return 0;
  12.      for(I = 0; I < strlen(Email); I++) {
  13.         switch(Email[I]) {
  14.           case ' ':case '\t':case '\n':case '\r':
  15.             case '(':case ')':case ':':case ',':
  16.             case '/':case '\\':case '"':case '~':
  17.             case '`':case '!':case '#':case '$':
  18.             case '%':case '^':case '&':case '*':
  19.             case '+':case '=':case '[':case ']':
  20.             case '{':case '}':case '|':case '?':
  21.             case '<':case '>':
  22.                      return 0;
  23.           }
  24.     }
  25.  
  26.      for(ArobasFound = 0, I = 1; I < strlen(Email); I++) if(Email[I] == '@') {
  27.           ArobasFound++;
  28.           if(ArobasFound == 1) AfterArobas = I;
  29.      }
  30.     if(ArobasFound!=1) return 0;
  31.     AfterArobas += 2;
  32.     while ((AfterArobas < strlen(Email)) && (Email[AfterArobas] != '.')) AfterArobas++;
  33.     if((AfterArobas >= strlen(Email) - 1) || (Email[AfterArobas] != '.')) return 0;
  34.     else return 1;
  35. }
  36.  
  37. int main()
  38. {
  39.     printf("Courriel «abc» est valide: %s\n",BoolToString(IsEmail("abc")));
  40.     printf("Courriel «@» est valide: %s\n",BoolToString(IsEmail("@")));
  41.     printf("Courriel «@abc.abc» est valide: %s\n",BoolToString(IsEmail("@abc.abc")));
  42.     printf("Courriel «abc@gladir.com» est valide: %s\n",BoolToString(IsEmail("abc@gladir.com")));
  43.     printf("Courriel «abc@@gladir.com» est valide: %s\n",BoolToString(IsEmail("abc@@gladir.com")));
  44.     printf("Courriel «abc@gl][adir.com» est valide: %s\n",BoolToString(IsEmail("abc@gl][adir.com")));
  45.     return 0;
  46. }

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 22 avril 2011