Section courante

A propos

Section administrative du site

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 :

A l'aide du code source C++ suivant, vous trouverez la réponse que vous souhaitez :

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

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 : Mardi, le 24 novembre 2015