检查电子邮件是否与指定的域匹配或拒绝

时间:2013-02-03 18:18:05

标签: php javascript email whitelist

目前,我的电子邮件接受所有电子邮件域。我想定义哪些是允许从列表(solent.ac.uk,herts.ac.uk),而不是公共的,如@ gmail.com等。无论哪种方式现在最容易,我会尝试替代现在的方式,这只是暂时的。

<form method="post" action="<?php url_for('register'); ?>">

  <!--Email-->
  <p class="email field">
    <input tabindex="1" id="email" type="text" name="email" value="<?php if(isset($_POST['email'])) echo $_POST['email']; ?>" placeholder="email@example.com" autofocus />
    <a href="<?php url_for('login'); ?>" tabindex="2" class="action button register" title="Click to log-in with your existing account.">Login</a>
  </p>

感谢。

2 个答案:

答案 0 :(得分:1)

PHP中的简化版

if ('POST' === $_SERVER['REQUEST_METHOD']) {
    $whitelist = array('solent.ac.uk', 'herts.ac.uk');
    $email     = $_POST['email'];
    list(, $domain) = array_pad(explode('@', $email, 2), 2, '');
    if (in_array($domain, $whitelist)) {
      // you're good
    }
    else {
      // not so good
    }

    // more data validation
}

答案 1 :(得分:0)

<form>中,您可以将电子邮件分成两部分;用户名和域名。用户名将是典型的文本输入,域部分将是选择下拉框。

简化示例如下:

<input type="text" name="email_username" />@
<select name="email_domain">
  <option value="domain1.com">@domain1.com</option>
  <option value="domain2.com">@domain2.com</option>
  <option value="domain3.com">@domain3.com</option>
  <option value="domain4.com">@domain4.com</option>
</select>