Php 特定于域的电子邮件验证

Php 特定于域的电子邮件验证,php,validation,Php,Validation,我正在尝试编写一个注册表,在那里我验证用于注册的电子邮件 简而言之,我想确保用于注册的电子邮件ID是公司域,而不是gmail或yahoo之类的东西 我有以下代码来检查电子邮件是否是给定域的一部分,如何修改此代码以检查它是否不在给定域列表中?(例如:gmail.com、yahoo.com、hotmail.com等) 我认为应该是这样的,但不能完全确定: function validate($email) { $error = 0; $domains = array('gmail.com','yah

我正在尝试编写一个注册表,在那里我验证用于注册的电子邮件

简而言之,我想确保用于注册的电子邮件ID是公司域,而不是gmail或yahoo之类的东西

我有以下代码来检查电子邮件是否是给定域的一部分,如何修改此代码以检查它是否不在给定域列表中?(例如:gmail.com、yahoo.com、hotmail.com等)

我认为应该是这样的,但不能完全确定:

function validate($email)
{
$error = 0;
$domains = array('gmail.com','yahoo.com','hotmail.com');
foreach($domains as $key=>$value)
{
if(preg_match('/^([a-z0-9\+\_\-\.]+)@([a-z0-9\+\_\-\.]{2,})(\.[a-z]{2,4})$/i', $value)
{
$error=1;
}
}
if($error==0)
return true;
else
return false;
编辑:我尝试了这里给出的所有答案,无论我使用哪个域,表单提交都没有问题!(即使是非电子邮件也似乎有效!)

这就是我调用函数的方式-

if(isset($_POST['clients_register']))
{

        //Must contain only letters and numbers
        if(!preg_match('/^[a-zA-Z0-9]$/', $_POST['name']))
        {
            $error[]='The username does not match the requirements';        
        }
        //Password validation: must contain at least 1 letter and number. Allows characters !@#$% and be 8-15 characters
        if(!preg_match('/^(?=.*\d)(?=.*[A-Za-z])[0-9A-Za-z!@#$%]{8,15}$/', $_POST['password']))
        {
            $error[]='The password does not match the requirements';
        }
        //Email validation
        if (validateEmail($_POST['email'])==false)
        {
            $error[]='Invalid E-mail';
        }       
        //Output error in array as each line
        if ( count($error) > 0) 
          {
            foreach ($error as $output) {
               echo "{$output} <br>";
            }
        } else {
            //Syntax for SQL Insert into table and Redirect user to confirmation page
        }
}
if(isset($\u POST['clients\u register']))
{
//必须仅包含字母和数字
如果(!preg_match('/^[a-zA-Z0-9]$/',$_POST['name']))
{
$error[]=“用户名与要求不匹配”;
}
//密码验证:必须至少包含1个字母和数字。允许使用字符!@#$%,长度为8-15个字符
如果(!preg_match('/^(?=.*\d)(?=.[A-Za-z])[0-9A-Za-z!@$%]{8,15}$/',$\u POST['password']))
{
$error[]=“密码与要求不匹配”;
}
//电子邮件验证
if(validateEmail($\u POST['email'])==false)
{
$error[]=“无效电子邮件”;
}       
//数组中每行的输出错误
如果(计数($error)>0)
{
foreach($error作为$output){
回显“{$output}
”; } }否则{ //SQL插入表并将用户重定向到确认页的语法 } }

问题是,无论我做什么,用户都会被重定向到确认页面(即使名称由数字和类似“表”的电子邮件组成)。

您应该在单独的步骤中执行此操作。首先检查电子邮件地址是否具有有效的语法。然后提取域并查看它是否不在您的黑名单中

function validate($email)
{
  if (!preg_match('/^([a-z0-9\+\_\-\.]+)@([a-z0-9\+\_\-\.]{2,})(\.[a-z]{2,4})$/i', $email)) return false;

  $domains = array('gmail.com','yahoo.com','hotmail.com');
  list(, $email_domain) = explode('@', $email, 2);
  return !in_array($email_domain, $domains);
}

您应该在单独的步骤中执行此操作。首先检查电子邮件地址是否具有有效的语法。然后提取域并查看它是否不在您的黑名单中

function validate($email)
{
  if (!preg_match('/^([a-z0-9\+\_\-\.]+)@([a-z0-9\+\_\-\.]{2,})(\.[a-z]{2,4})$/i', $email)) return false;

  $domains = array('gmail.com','yahoo.com','hotmail.com');
  list(, $email_domain) = explode('@', $email, 2);
  return !in_array($email_domain, $domains);
}

您应该在单独的步骤中执行此操作。首先检查电子邮件地址是否具有有效的语法。然后提取域并查看它是否不在您的黑名单中

function validate($email)
{
  if (!preg_match('/^([a-z0-9\+\_\-\.]+)@([a-z0-9\+\_\-\.]{2,})(\.[a-z]{2,4})$/i', $email)) return false;

  $domains = array('gmail.com','yahoo.com','hotmail.com');
  list(, $email_domain) = explode('@', $email, 2);
  return !in_array($email_domain, $domains);
}

您应该在单独的步骤中执行此操作。首先检查电子邮件地址是否具有有效的语法。然后提取域并查看它是否不在您的黑名单中

function validate($email)
{
  if (!preg_match('/^([a-z0-9\+\_\-\.]+)@([a-z0-9\+\_\-\.]{2,})(\.[a-z]{2,4})$/i', $email)) return false;

  $domains = array('gmail.com','yahoo.com','hotmail.com');
  list(, $email_domain) = explode('@', $email, 2);
  return !in_array($email_domain, $domains);
}
PHP

// Suposing that $email is a valid email
function validate($email) {
    $invalidDomains = array('gmail.com','yahoo.com','hotmail.com');
    $parts = explode('@',$email);
    $domain = $parts[1];
    if(!in_array($domain,$invalidDomains)) return true;
    return false;
}
让我知道它是否有用。

PHP

// Suposing that $email is a valid email
function validate($email) {
    $invalidDomains = array('gmail.com','yahoo.com','hotmail.com');
    $parts = explode('@',$email);
    $domain = $parts[1];
    if(!in_array($domain,$invalidDomains)) return true;
    return false;
}
function validateEmail($email)
{
    // Etc, just an array of the blacklisted domains
    $blacklistDomains = ['gmail.com', 'yahoo.com', 'hotmail.com', 'googlemail.com']; 
    // Check if the email is valid
    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
        return false;
    }

    // Split the email after the '@' to get the domain
    $emailParts = explode('@', $email);

    if (in_array(end($emailParts), $blacklistDomains)) {
        return false;
    }

    return true;
}
让我知道它是否有用。

PHP

// Suposing that $email is a valid email
function validate($email) {
    $invalidDomains = array('gmail.com','yahoo.com','hotmail.com');
    $parts = explode('@',$email);
    $domain = $parts[1];
    if(!in_array($domain,$invalidDomains)) return true;
    return false;
}
function validateEmail($email)
{
    // Etc, just an array of the blacklisted domains
    $blacklistDomains = ['gmail.com', 'yahoo.com', 'hotmail.com', 'googlemail.com']; 
    // Check if the email is valid
    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
        return false;
    }

    // Split the email after the '@' to get the domain
    $emailParts = explode('@', $email);

    if (in_array(end($emailParts), $blacklistDomains)) {
        return false;
    }

    return true;
}
让我知道它是否有用。

PHP

// Suposing that $email is a valid email
function validate($email) {
    $invalidDomains = array('gmail.com','yahoo.com','hotmail.com');
    $parts = explode('@',$email);
    $domain = $parts[1];
    if(!in_array($domain,$invalidDomains)) return true;
    return false;
}
function validateEmail($email)
{
    // Etc, just an array of the blacklisted domains
    $blacklistDomains = ['gmail.com', 'yahoo.com', 'hotmail.com', 'googlemail.com']; 
    // Check if the email is valid
    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
        return false;
    }

    // Split the email after the '@' to get the domain
    $emailParts = explode('@', $email);

    if (in_array(end($emailParts), $blacklistDomains)) {
        return false;
    }

    return true;
}
如果有用,请告诉我

function validateEmail($email)
{
    // Etc, just an array of the blacklisted domains
    $blacklistDomains = ['gmail.com', 'yahoo.com', 'hotmail.com', 'googlemail.com']; 
    // Check if the email is valid
    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
        return false;
    }

    // Split the email after the '@' to get the domain
    $emailParts = explode('@', $email);

    if (in_array(end($emailParts), $blacklistDomains)) {
        return false;
    }

    return true;
}
你需要一个相当大的域名列表

你需要一个相当大的域名列表

你需要一个相当大的域名列表



您将需要一个相当大的域列表。

$email\u parts=split('@',$email);if(在数组中($email\u parts[1],$domains)……。
添加“googlemail.com”,这是gmail的另一个域名…这些大邮件服务有什么问题?使用不在你名单上的域名并不保证它属于一家公司。而且公司也可能在他们的域名下使用谷歌邮件。我想知道你想从黑名单中得到什么效果。这是专门用来隔离那些不属于你的小公司的eir拥有自己的域。解释起来很复杂,但无论如何我都感谢您的帮助!
$email\u parts=split('@',$email);if(在数组中($email\u parts[1],$domains)….
添加“googlemail.com”,这是gmail的另一个域名…这些大邮件服务有什么问题?使用不在你名单上的域名并不保证它属于一家公司。而且公司也可能在他们的域名下使用谷歌邮件。我想知道你想从黑名单中得到什么效果。这是专门用来隔离那些不属于你的小公司的eir拥有自己的域。解释起来很复杂,但无论如何我都感谢您的帮助!
$email\u parts=split('@',$email);if(在数组中($email\u parts[1],$domains)….
添加“googlemail.com”,这是gmail的另一个域名…这些大邮件服务有什么问题?使用不在你名单上的域名并不保证它属于一家公司。而且公司也可能在他们的域名下使用谷歌邮件。我想知道你想从黑名单中得到什么效果。这是专门用来隔离那些不属于你的小公司的eir拥有自己的域。解释起来很复杂,但无论如何我都感谢您的帮助!
$email\u parts=split('@',$email);if(在数组中($email\u parts[1],$domains)….
添加“googlemail.com”,这是gmail的另一个域名…这些大邮件服务有什么问题?使用不在你名单上的域名并不保证它属于一家公司。而且公司也可能在他们的域名下使用谷歌邮件。我想知道你想从黑名单中得到什么效果。这是专门用来隔离那些不属于你的小公司的eir自己的域。解释起来很复杂,但不管怎样我还是很感谢你的帮助!我试过了,我用我调用电子邮件的方式编辑了我的原始帖子,但似乎仍然不起作用!验证功能是正确的。验证完成了吗?问题出在其他地方。如果我输入了错误的用户名(如W@rnold)?什么是
$\u POST['clients\u register']
?如果($\u SERVER['REQUEST\u METHOD']='POST'),为什么不执行
{
相反?当我使用dreamweaver的插入记录选项时,这是默认设置!但我会按照您的方式尝试,并让您知道它是如何工作的!我尝试了这个,我用调用电子邮件的方式编辑了我的原始帖子,但似乎仍然不起作用!验证功能正确。验证是否完成?问题在别处。如果我输入错误的用户名(如'W@rnold“)?什么是
$\u POST['clients\u register']
?如果($\u SERVER['RE]),为什么不做