Re: E-Mail Verification - Yes, I know....

From: Date: Tue, 28 Apr 2009 16:34:51 +0000
Subject: Re: E-Mail Verification - Yes, I know....
References: 1 2 3  Groups: php.general 
Request: Send a blank email to php-general+get-292089@lists.php.net to get a copy of this message
2009/4/28 Luke <luke@blog-thing.com>: > > > 2009/4/28 Jan G.B. <ro0ot.w00t@googlemail.com> >> >> 2009/4/28 Jay Blanchard <jblanchard@pocket.com>: >> > Our company wants to do e-mail verification and does not want to use the >> > requests / response method (clicking a link in the e-mail to verify the >> > address), which as we all know is the only way you can be truly sure. I >> > found this; >> > >> > http://verify-email.org/ >> > >> > Which seems to be the next best deal and it is written in PHP. Has >> > anyone used this? Is anyone doing something similar? How do you handle >> > errors? I know that some domains will not accept these requests. >> > >> >> They don't even detect greylisting! >> >> >> >> > I think that this method would really work for us and cut down on the >> > bogus e-mail addresses we're receiving though. Thoughts? >> > >> >> There's just one way: let the users confirm with an activation link. >> People often insert their addresses wrong without noticing it.. >> example: www.myalias@mydomain.org instead of myalias@mydomain.org, >> aol.<DE|UK|NL|FR|etc> instead of aol.com and so on. >> >> So ... nothing like "insert your mail twice" or "re-check your address >> please" actually works. ;) >> >> On the other hand: Douple-opt-In is quite like an industry standard - >> why wouldn't your firm use it? It makes customers happy as well as >> "not-customers" because people can't use their addressess to sign-up. >> I hate getting other peoples email. >> >> >> byebye >> >> -- >> PHP General Mailing List (http://www.php.net/) >> To unsubscribe, visit: http://www.php.net/unsub.php >> > >     /** >     Validate an email address. >     Provide email address (raw input) >     Returns true if the email address has the email >     address format and the domain exists. > >     Modified: 06/06/2003 >     **/ >     function validEmail($email) >     { >            $isValid = true; >            $atIndex = strrpos($email, "@"); >            if (is_bool($atIndex) && !$atIndex) >            { >                   $isValid = false; >            } >            else >            { >                   $domain = substr($email, $atIndex+1); >                   $local = substr($email, 0, $atIndex); >                   $localLen = strlen($local); >                   $domainLen = strlen($domain); >                   if ($localLen < 1 || $localLen > 64) >                   { >                      // local part length exceeded >                      $isValid = false; >                   } >                   else if ($domainLen < 1 || $domainLen > 255) >                   { >                     // domain part length exceeded >                     $isValid = false; >                   } >                   else if ($local[0] == '..' || $local[$localLen-1] == > '.') >                   { >                     // local part starts or ends with '.' >                      $isValid = false; >                   } >                   else if (preg_match('/\\.\\../', $local)) >                   { >                     // local part has two consecutive dots >                      $isValid = false; >                   } >                   else if (!preg_match('/^[A-Za-z0-9\\-\\.]+$/', > $domain)) >                   { >                     // character not valid in domain part >                      $isValid = false; >                   } >                   else if (preg_match('/\\.\\../', $domain)) >                   { >                     // domain part has two consecutive dots >                      $isValid = false; >                   } >                   else if > (!preg_match('/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^{}|~.-])+$/', > str_replace("\\\\","",$local))) >                   { >                     // character not valid in local part unless >                     // local part is quoted >                      if > (!preg_match('/^"(\\\\"|[^"])+"$/', > str_replace("\\\\","",$local))) >                      { >                             $isValid = false; >                      } >                   } > >             if ($isValid && !(checkdnsrr($domain,"MX") || > checkdnsrr($domain,"A"))) >                   { >                     // domain not found in DNS >                      $isValid = false; >                   } >            } > >        return $isValid; >     } > > > -- > Luke Slater I Like the approach of checking the DNS. But all that regexp matching could be skipped when using filter_input() or filter_var() with the Filter FILTER_VALIDATE_EMAIL - or am I wrong? I'm using the filter in combination with a domain checker which basically checks for a valid TLD on a high traffic website with great success - so far. byebye

« previous php.general (#292089) next »