Daily Archives: February 16, 2005

vfat (Very Fat?) Linux

This article is a good read if you access Windows/DOS drives from Linux. The author explains how to access those drives, as well as some of the restrictions and problems when using vfat drives.
NTFS is also an option of course, but as Linux only has read-only access to that, vfat is a better solution if you want to share files between the two operating systems. Pity it’s so slow and has so many restrictions. :(
There’s also a warning contained within: if you’re using a Linux 2.4 kernel, be wary if you have vfat partitions over 130GB in size. You will lose data. This problem was solved in the now widely available 2.6 kernel.

Validate Email Address in PHP

It’s a common task but one that I haven’t looked at in as much detail as this devshed article. There’s a few bugs in the code, and a function was posted to the comments that’s all over the place.. here’s the same PHP function, cleaned up, to verify an email address. Note that it won’t work in Windows as-is because “checkdnsrr()” isn’t available on Windows platforms. (Remove the \ characters from before the ” characters surrounding the regex.. WordPress adds them when I post this. *grrr*)

function checkEmail($email)
{
  // checks proper syntax
  if( !preg_match( "/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/", $email))
  {
    return false;
  }

  // gets domain name
  list($username,$domain)=split('@',$email);
  // checks for if MX records in the DNS
  $mxhosts = array();
  if(!getmxrr($domain, $mxhosts))
  {
    // no mx records, ok to check domain
    if (!fsockopen($domain,25,$errno,$errstr,30))
    {
      return false;
    }
    else
    {
      return true;
    }
  }
  else
  {
    // mx records found
    foreach ($mxhosts as $host)
    {
      if (fsockopen($host,25,$errno,$errstr,30))
      {
        return true;
      }
    }
    return false;
  }
}