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