我想通过验证已注册的电子邮件来检查注册用户是否为学生。我有一个包含多个教育电子邮件域名的表,如@ mmu.edu.my,@ taylor.edu.uk等。首先,控制器应从数据库中获取所有可用的名称并验证用户电子邮件。然后根据他们的大学分配不同的角色。但问题是如何使用数据库中的每个可用域名检查电子邮件。
在我的控制器中,我收到了注册用户的电子邮件。
$user_email=$user_info->email;
这是电子邮件的示例
alex_9237502834@taylor.edu.uk
它们是否可供我学习如何验证?
答案 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
}
}