PHP:Tank Auth,需要特定的电子邮件地址才能登录

Posted

技术标签:

【中文标题】PHP:Tank Auth,需要特定的电子邮件地址才能登录【英文标题】:PHP: Tank Auth, require a certain email address to login 【发布时间】:2012-08-30 22:37:30 【问题描述】:

所以我刚刚设置了 tank auth,我还没有更改任何内容,所以一切都应该是默认的。它工作得很好。但是,我想要求某个域才能使电子邮件能够登录。现在我会说gmail。那么我怎样才能使它在用户注册之前检查电子邮件地址是否包含@gmail.com。我找到了有效的电子邮件错误消息在哪里并且可以更改它,但我找不到有效电子邮件的实际检查位置。

【问题讨论】:

github.com/ilkon/Tank-Auth/blob/master/application/controllers/… Line 132 (valid_email) 【参考方案1】:

Tank auth 使用 CI 的默认 valid_email 验证规则,可在 Form Validation 类中找到。

想要做这件事绝对是一件奇怪的事情,但是你可以创建一个callback validation function,并将其添加到注册页面上的表单验证规则中。

这基本上相当于ends_with 规则,但添加了“@”:

// Check if the inputs last characters matches the parameter
function is_email_domain($input, $domain) 
   $domain_str = '@'.$domain;
   $result = strpos($input, $domain_str) === (strlen($input) - strlen($domain_str));
   if ( ! $result) $this->form_validation->set_message('is_email_domain', 'The %s field must be a %s email address');
   return $result;

所以在你的控制器中创建回调函数并将其添加到验证中:

$this->form_validation->set_rules(
    'email',
    'Email',
    'trim|required|xss_clean|valid_email|callback_is_email_domain[gmail.com]'
);

【讨论】:

哈哈!这非常感谢!也是很好的学习经历。感谢您的深入回复。至于请求的奇怪之处,它是针对我学校的网站(ish),我们希望用户拥有有效的学校电子邮件才能注册,这样我们就可以确保他们是学生。当然,它不会是 gmail,而是同样的东西。再次感谢您!

以上是关于PHP:Tank Auth,需要特定的电子邮件地址才能登录的主要内容,如果未能解决你的问题,请参考以下文章

如何捕获 Firebase Auth 特定异常

在线表格如何阻止特定的电子邮件地址[关闭]

如果用户名/电子邮件与特定域不匹配,则显示窗口警报

如何在 Symfony 中访问已登录的 Auth0 用户的电子邮件地址?

如何在 Auth0 中存储用户全名而不是电子邮件地址?

php Auth中间件到特定路由