PHPBuilder - E-mail Validation--Check format and MX records



RSS Twitter
Snippets Other

E-mail Validation--Check format and MX records

by: Laurence O'Donnell
|
June 29, 2001

Version: 1.0

Type: Sample Code (HOWTO)

Category: Other

License: GNU General Public License

Description: Get rid of fake e-mail addresses from your user inputs. This script not only checks the validity of the format of the e-mail address, but it attempts to connect to the mail server of the submitted e-mail address as well. Don't settle for a database full of fake e-mail addresses.



// Set the form error check to false
$form_errors = array();

//E-Mail address verifications
  // Make Email a required field
  $Email = trim($Email);
    if ($Email == "") {
      $form_errors["required_Email"] = true;
    }
    elseif (!eregi("^([a-zA-Z0-9._-])+@([a-zA-Z0-9._-])+\.([a-zA-Z0-9._-])([a-zA-Z0-9._-])+", $Email)) {
      $form_errors["Email_badformat"] = true;
    }
    // Attempt to resolve the MX host
    else {
      list($user, $domain) = split("@", $Email, 2);
      if (! checkdnsrr($domain, "MX")) {
        $form_errors["Email_badhost"] = true;
      }
    }

// Check if there are any errors
if (count($form_errors)) {
  // If the user left the e-mail field blank
  if ($form_errors["required_Email"]) {
    echo("<font color=\"#ff0000\"><b>Your E-mail Address is required.</b></font>");
  }
  // If the format of the e-mail address is incorrect
  elseif ($form_errors["Email_badformat"]) {
    echo("<font color=\"#ff0000\"><b>Please enter a valid e-mail address.</b></font>");
  }
  // If the mail server of the address the user provided could not be contacted
  elseif ($form_errors["Email_badhost"]) {
    echo("<font color=\"#ff0000\"><b>Your E-mail address did not resolve to a working e-mail server.<br> Please enter a valid e-mail address.</b></font>");
  }
}

Comment and Contribute

Your comment has been submitted and is pending approval.

Author:
Laurence O'Donnell

Comment:



Comment:

(Maximum characters: 1200). You have characters left.