Re: E-Mail Verification - Yes, I know....
| From: | Jan G.B. | 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