E-mail Validation & Verification with PHP

This sections will contains code regarding different PHP & MySQL features and contains help about php/mysql issues.

E-mail Validation & Verification with PHP

Postby Shahzad Butt on July 23rd, 2008, 10:57 am

When you register on at a website, the site normally checks if the e-mail address that you enter is in a valid format. This is done by using what called a Regular Expression. What we need to do is check if a string (eg $email) matches the regular expression:

Code: Select all
ereg("^[a-zA-Z0-9_]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$]", $email);

At the moment that only checks the string ($email), but does not does not output anything.So next we need to write an IF statement that returns a boolean value, if the string does not match the regular expressions.
Code: Select all
if (eregi("^[a-zA-Z0-9_]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$]", $email))
{
   return FALSE;
}


That is the basic validation bit, but now we can do even more validation. What we will do next is check the domain name after the @ is a real domain name. (We do this by checking if an MX record exists for that domain name and then we check if port 25 is open for that domain name, which makes sure that the domain name is in use.)

Code: Select all
list($Username, $Domain) = split("@",$email);
if(getmxrr($Domain, $MXHost))
{
   return TRUE;
}
else
{
   if(fsockopen($Domain, 25, $errno, $errstr, 30))
   {
      return TRUE;
   }
   else
   {
      return FALSE;
   }
}


Now to finish it all off we put those last two pieces of code togther in a function, so we can re-use again and again. If you are not understanding the code, ignore everything we said above and copy-paste this code on the top of your PHP code.
Code: Select all
function checkEmail($email)
{
   if(eregi("^[a-zA-Z0-9_]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$]", $email))
   {
      return FALSE;
   }

   list($Username, $Domain) = split("@",$email);

   if(getmxrr($Domain, $MXHost))
   {
      return TRUE;
   }
   else
   {
      if(fsockopen($Domain, 25, $errno, $errstr, 30))
      {
         return TRUE;
      }
      else
      {
         return FALSE;
      }
   }
}


Now all thats needed is that we call the function and check the boolean output. For beginners, whenever you want to check an e-mail, just call this function:
Code: Select all
if(checkEmail(info@geosourcecode.com) == FALSE)
{
   echo "E-mail entered is not valid.";
}
else
{
   echo "E-mail entered is valid.";
}
Regards
Shahzad Butt
http://www.GeoSourceCode.com
Shahzad Butt
 
Posts: 24
Joined: July 9th, 2008, 11:16 am
Location: Pakistan

Return to PHP / MySQL / XML

Who is online

Users browsing this forum: No registered users and 0 guests

cron