So sprach »Max Mouse« am 2001-09-13 um 11:28:01 -0700 :
> the domain actually exists. Can anyone lend a hand?

My try:

 function CheckEmail($adr){
   // Parameter:
   // $adr  -> Email Adress
   // Rückgabewerte:
   // TRUE  -> everything fine
   // Else, returns array:
   // Array(code, part)
   // Code s.u.; part: Part which caused error
   // -1    -> no @ in adr
   // -2    -> More than 1 @ (alas theoretically correct...)
   // -3    -> Error in Local-Part 
   // -4    -> Error in Domainname
   // -5    -> Domain not existent
   // -6    -> No MX for Domain

   // Regexpe
   $re = array(
     // - Local-Part
     'lp'  => '[a-z_\d][-_.a-z\d]{0,}',
     // - Domain
     'dom' => '(?:[a-z\d]{1,}(?:[-a-z\d]{0,}?){0,}?\.){0,}[a-z]{2,3}\.{0,1}'
   );

   foreach ($re as $typ => $wert){
     $re[$typ] = '÷^' . $wert . '$÷i';
   }

   if (('' == $adr) ||
       (FALSE === ($parts = split('@', $adr)))
      ){
     // Nothing to do
     return array('code' => -1, 'part' => $adr);
   }
   if (2 > ($part_anzahl = count($parts))){
     // Less than 1 @ (also 0)
     return array('code' => -2, 'part' => $adr);
   }
   if (2 < $part_anzahl){
     // Too many @'s!
     return array('code' => -3, 'part' => $adr);
   }
   if (! preg_match($re['lp'], $parts[0])){
     // Local-Part error!
     return array('code' => -4, 'part' => $parts[0]);
   }
   if (! preg_match($re['dom'], $parts[1])){
     // Domain looks bogus!
     return array('code' => -5, 'part' => $parts[1]);
   }
   if (! checkdnsrr($parts[1], 'ANY')){
     // Domain not existant
     return array('code' => -6, 'part' => $parts[1]);
   }
   if (! checkdnsrr($parts[1], 'MX')){
     // No MX for domain
     return array('code' => -7, 'part' => $parts[1]);
   }

   // When we get here, everything is fine!
   return TRUE;
 }

Alexander Skwar
-- 
How to quote:   http://learn.to/quote (german) http://quote.6x.to (english)
Homepage:       http://www.digitalprojects.com   |   http://www.iso-top.de
   iso-top.de - Die günstige Art an Linux Distributionen zu kommen
                Uptime: 12 hours 58 minutes

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to