我想通过验证注册电子邮件来检查注册用户是学生。我有一个表格,其中包含多个教育电子邮件域名,如@mmu.edu.my,@taylor.edu.uk等。首先,控制器应该从数据库中获取所有可用的名称,并验证用户的电子邮件。然后将根据各自的大学分配不同的角色。但问题是如何检查电子邮件与每个可用的域名在数据库中。
在我的控制器里,我收到了注册用户的电子邮件。
$user_email=$user_info->email;这是电子邮件的例子。
alex_9237502834@taylor.edu.uk它们对我学习如何验证有任何参考吗?
发布于 2017-05-05 04:00:38
所以我猜会有多个域?您需要检查电子邮件域是否属于其中之一。
因此,首先,获得一个查询,通过该查询,您将获得所有域。
然后
$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
}
}发布于 2017-05-05 03:46:40
我只需将有效域循环为数组,如下所示:
<?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发布于 2017-05-05 03:49:23
首先用"@“号把电子邮件分开。
$user_email=$user_info->email;
$splitted = explode('@',$user_email);
if($splitted[1] == "mmu.edu.my")
{
// attach role here
}
elseif(....)
{
}https://stackoverflow.com/questions/43796075
复制相似问题