0

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

4

1 回答 1

2

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

想做这件事绝对是一件很奇怪的事情,但是你可以创建一个回调验证函数,并在注册页面上将它添加到你的表单验证规则中。

这基本上相当于一条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]'
);
于 2012-08-30T22:44:17.440 回答