所以我刚刚设置了坦克auth,我还没有改变任何东西所以一切都应该是默认的。它工作得很好。但是,我想要某个域的电子邮件能够登录。现在我会说gmail。那么我怎样才能做到这一点,以便在用户注册之前检查电子邮件地址中是否有@gmail.com。我找到了有效的电子邮件错误消息的位置,可以更改但我找不到实际检查有效电子邮件的位置。
答案 0 :(得分:2)
Tank auth正在使用CI的默认valid_email
验证规则,可在表单验证类中找到。
这绝对是一件奇怪的事情,但你可以创建一个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]'
);