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 Ada suivant, vous trouverez la réponse que vous souhaitez :

  1. WITH TEXT_IO;  
  2.  
  3. PROCEDURE Email IS 
  4.     
  5.    USE TEXT_IO;  
  6.    
  7.    FUNCTION BooleanToStr(X:IN Boolean) RETURN String IS BEGIN  
  8.       IF(X)THEN
  9.          RETURN "true";
  10.       ELSE
  11.          RETURN "false";  
  12.       END IF;            
  13.    END BooleanToStr;  
  14.    
  15.    FUNCTION IsEmail(Email:IN String) RETURN Boolean IS 
  16.       ArobasFound, AfterArobas : Integer;     
  17.    BEGIN       
  18.       IF((Email = "") OR (Email'Length = 0)) THEN         
  19.          RETURN False;
  20.       END IF;      
  21.       FOR I IN 1..Email'Length LOOP         
  22.          CASE Email(I) IS
  23.             WHEN Character'Val(9) | Character'Val(10) | Character'Val(13) | ' ' | '(' | ')' | ':'| ',' | 
  24.                   '/' | ''' | '"' | '~' | '`' | '!' | '#' | '$' | '%' | '^' | '&' | '*' | '+' | '=' | '[' |
  25.                   ']' | '{' | '}' | '|' | '\' | '?' | '<' | '>' =>
  26.                RETURN False;
  27.             WHEN OTHERS => ArobasFound := ArobasFound;
  28.                
  29.          END CASE;         
  30.       END LOOP;
  31.       ArobasFound := 0;      
  32.       FOR I IN 2..Email'Length LOOP
  33.          IF Email(I) = '@' THEN            
  34.             ArobasFound := ArobasFound + 1;            
  35.             IF ArobasFound = 1 THEN 
  36.                AfterArobas := I;               
  37.             END IF;
  38.          END IF;         
  39.       END LOOP;
  40.       IF ArobasFound /= 1 THEN
  41.          RETURN False;         
  42.       END IF;
  43.       AfterArobas := AfterArobas + 2;
  44.       WHILE ((AfterArobas < Email'Length) AND (Email(AfterArobas) /= '.')) LOOP         
  45.          AfterArobas := AfterArobas + 1;         
  46.       END LOOP;
  47.       IF((AfterArobas >= Email'Length - 1) OR (Email(AfterArobas) /= '.')) THEN
  48.          RETURN False;         
  49.       ELSE          
  50.          RETURN True;         
  51.       END IF;              
  52.    END IsEmail;   
  53.  
  54. BEGIN  
  55.    PUT_LINE("Courriel «abc» est valide: " & BooleanToStr(IsEmail("abc")));  
  56.    PUT_LINE("Courriel «@» est valide: " & BooleanToStr(IsEmail("@")));  
  57.    PUT_LINE("Courriel «@abc.abc» est valide: " & BooleanToStr(IsEmail("@abc.abc")));  
  58.    PUT_LINE("Courriel «abc@gladir.com» est valide: " & BooleanToStr(IsEmail("abc@gladir.com")));  
  59.    PUT_LINE("Courriel «abc@@gladir.com» est valide: " & BooleanToStr(IsEmail("abc@@gladir.com")));  
  60.    PUT_LINE("Courriel «abc@gl][adir.com» est valide: " & BooleanToStr(IsEmail("abc@gl][adir.com")));  
  61. END Email;

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 : Samedi, le 25 août 2012