PHP 检查正在注册的电子邮件域是“school.edu”地址

2022-08-30 18:49:17

我需要为我正在从事的一个有趣的项目编写一个函数,在这个项目中,我们使一个网站只能供机构的学生,员工和校友访问。

假设学校网站是:school.edu。

我在编写 php 过滤器时遇到了问题,该过滤器会检查提交的电子邮件地址是否具有“school.edu”域

我将举一个例子。Dude #1 有一封 user@mail.com 的电子邮件,Dude #2 有一封 user@school.edu。我想确保Dude 1收到错误消息,并且Dude #2注册成功。

这就是我试图做的要点。在不久的将来,该网站将允许另外两所地方学校注册:school2.edu 和 school3.edu。然后,我需要检查器根据一个小列表(可能是一个数组?)检查电子邮件,以验证该电子邮件是否属于列表中的域名。


答案 1

有几种方法可以实现这一点,这里有一种:

// Make sure we have input
// Remove extra white space if we do
$email = isset($_POST['email']) ? trim($_POST['email']) : null;

// List of allowed domains
$allowed = [
    'school.edu',
    'school2.edu',
    'school3.edu'
];

// Make sure the address is valid
if (filter_var($email, FILTER_VALIDATE_EMAIL))
{
    // Separate string by @ characters (there should be only one)
    $parts = explode('@', $email);

    // Remove and return the last part, which should be the domain
    $domain = array_pop($parts);

    // Check if the domain is in our list
    if ( ! in_array($domain, $allowed))
    {
        // Not allowed
    }
}

答案 2

您可以使用正则表达式:

if(preg_match('/^\w+@school\.edu$/i', $source_string) > 0)
    //valid

现在继续在评论中撕裂我,因为有一些疯狂的电子邮件地址功能我没有考虑到:)


推荐