SitePoint Sponsor

User Tag List

Results 1 to 4 of 4
  1. #1
    SitePoint Zealot fredep57's Avatar
    Join Date
    Aug 2009
    Location
    Pacific Northwest
    Posts
    137
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Keep getting invalid email

    OK, I have a routine (taken from the web) that SHOULD validate a valid email address (using info@saccc567.com which is valid). But, it keeps returning FALSE so I get the message "Invalid email" and exits out (per my check)

    Here is my php code:

    PHP Code:
    <?php
    function is_valid_email($email) {

       
    $isValid true;
       
    $atIndex strrpos($email"@");
       if (
    is_bool($atIndex) && !$atIndex)
       {
          
    $isValid false;
       }
       else
       {
          
    $domain substr($email$atIndex+1);
          
    $local substr($email0$atIndex);
          
    $localLen strlen($local);
          
    $domainLen strlen($domain);
          if (
    $localLen || $localLen 64)
          {
             
    // local part length exceeded
             
    $isValid false;
          }
          else if (
    $domainLen || $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;

    }
    ?>
    Can't figure out why the valid email is being tagged invalid. Or maybe just don't understand what is going on with this - I am still new at PHP so.....

    Thanks

    F

  2. #2
    From Italy with love silver trophybronze trophy
    guido2004's Avatar
    Join Date
    Sep 2004
    Posts
    9,508
    Mentioned
    163 Post(s)
    Tagged
    4 Thread(s)
    put some echo statements (just for debugging purposes) in that function to see where the email is being tagged invalid

  3. #3
    Twitter: @AnthonySterling silver trophy AnthonySterling's Avatar
    Join Date
    Apr 2008
    Location
    North-East, UK.
    Posts
    6,111
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)
    There's always filter_var.

    PHP Code:
    <?php
    function is_valid_email($email){
      return 
    false !== filter_var($emailFILTER_VALIDATE_EMAIL);
    }
    @AnthonySterling: I'm a PHP developer, a consultant for oopnorth.com and the organiser of @phpne, a PHP User Group covering the North-East of England.

  4. #4
    SitePoint Zealot fredep57's Avatar
    Join Date
    Aug 2009
    Location
    Pacific Northwest
    Posts
    137
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Ah.... figured it out thanks to the reminder from guido2004 - have to do more debugging and forgot about echoing the stuff back to see what is going on. Thanks.

    Anthony, the filter works - kind of. It allows too much through so am trying other things. I thought it was too simple - and it should be.

    Thanks to both of you for putting me on the right track.

    F


Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •