【发布时间】:2010-02-01 12:20:35
【问题描述】:
首先,我要为我糟糕的英语道歉。
假设我在控制器中有这样的功能:
function confirm()
{
$this->load->helper(array('form', 'url'));
$this->load->library('form_validation');
$this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email|exist[member.email]');
$this->form_validation->set_rules('secretKey','Secret Key', 'required|callback_secret_check');
$this->form_validation->set_message('exist',"Email don't exist");
$this->form_validation->set_message('secret_check','Invalid confirmation code');
if ($this->form_validation->run() == FALSE)
{
// if error, show form and the error msg
$this->view->full_render('user_confirm') ;
} else {
// if all ok
echo "success" ;
}
}
简而言之,此功能用于使用确认码验证新用户电子邮件。就像我们在任何需要注册的网站上找到的一样。我做了这个功能,以防某些用户更喜欢直接使用确认表单而不是使用确认 url 提交他的确认码(我们将确认 url 和确认码都发送到他的电子邮件)
仅供参考,“存在”规则是我自己通过扩展表单类创建的规则,以检查提交的电子邮件是否真的存在。对于“callback_secret_check”规则,我创建回调函数(不是像第一条规则那样扩展表单验证类)来检查用户提交的确认码是否有效。
现在,假设我有用户电子邮件“example@example.com”,确认码为“12345”。如果他提交代码为“22323”的“example@example.com”,则系统将显示错误消息:
- 确认码无效
这种情况没问题。
但是,如果有人提交“this.is.not.exist@example.com”和任何确认码,系统会显示错误信息
- 电子邮件不存在
- 确认码无效
我想要的只是
- 电子邮件不存在
没有显示“无效的确认码”,因为如果电子邮件甚至不存在,我认为我们不需要告诉任何有关确认码的信息。有什么线索吗?
感谢您的帮助。
【问题讨论】: