检查电子邮件是否属于学生电子邮件,其中包含laravel

时间:2017-05-05 03:35:55

标签: php laravel email

我想通过验证已注册的电子邮件来检查注册用户是否为学生。我有一个包含多个教育电子邮件域名的表,如@ mmu.edu.my,@ taylor.edu.uk等。首先,控制器应从数据库中获取所有可用的名称并验证用户电子邮件。然后根据他们的大学分配不同的角色。但问题是如何使用数据库中的每个可用域名检查电子邮件。

在我的控制器中,我收到了注册用户的电子邮件。

$user_email=$user_info->email;

这是电子邮件的示例

alex_9237502834@taylor.edu.uk

它们是否可供我学习如何验证?

3 个答案:

答案 0 :(得分:0)

我只是将有效域作为数组循环,如下所示:

<?php
$validDomains = array('mmu.edu.my', 'taylor.edu.uk');

function validEmail($email, $validDomains) {
    if (!filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
        $email_parts = explode('@', $email);    // [0] will be ben, [1] will be mmu.edu.my

        // Valid email address. Does it match anything in our domain whitelist?
        foreach($validDomains as $validDomain) {
            if (strtolower($validDomain) == $email_parts[1]) {
                return true;
            }
        }
    }
    return false;   // No matches
}


var_dump( validEmail('ben@mmu.edu.my', $validDomains) );        // TRUE
var_dump( validEmail('ben@randomdomain.com', $validDomains) );  // FALSE
var_dump( validEmail('clearlynotanemail', $validDomains) );     // FALSE
var_dump( validEmail('jow@taylor.edu.uk', $validDomains) );     // TRUE

答案 1 :(得分:0)

首先使用&#34; @&#34;分割电子邮件;签署..

$user_email=$user_info->email;
$splitted = explode('@',$user_email);

if($splitted[1] == "mmu.edu.my")
{
    // attach role here
}
elseif(....)
{

}

答案 2 :(得分:0)

所以我猜有多个域名?并且您需要检查电子邮件域是否属于其中一个。

所以首先得到一个查询,通过该查询,您将获得所有域名。

然后

$user_email = explode('@',$entered_email);
$user_email_domain = $user_email[1];
foreach($sql_returned as $sql)
{
 if($sql->email == $user_email_domain)
{
    do what you want
}
else
{
    do something else
}
}