我目前正在使用codeIgniter 3.我创建了一个包含用户名,密码,密码确认和电子邮件的注册页面。为了比较两个字符串,我使用了strcmp()函数。现在,问题是当我提出像
这样的东西password = "moon";
confirmation_password = "moon";
它没有任何问题。逻辑上你会告诉我:) 否则,当我把类似
的东西password = "moon";
confirmation_password = "something else";
现在它仍然可以显示相应的错误消息。从逻辑上讲,你会告诉我。除了弹出另一个错误消息:
Unable to access an error message corresponding to your field name Password confirmation.(check_information)
我不明白只有当confirmation_password变量与密码变量不匹配时,才会弹出此错误消息。 这是我的代码
function index()
{
$this->form_validation->set_rules('confirmation_password', 'Password confirmation', 'trim|required|callback_check_information');
}
function check_information($confirmation_password)
{
$password = $this->input->post('password');
if (strcmp($password, $confirmation_password))
{
echo 'password and confirmation password doesn\'t match';
return FALSE;
}
}
有人能判断我的代码中是否有错误吗? 我自愿向您展示我的代码的一部分,以避免我的帖子太长。
由于
答案 0 :(得分:2)
在这两种情况下都必须使用布尔值返回,而不是回显消息,设置它:
function check_information($confirmation_password)
{
$password = $this->input->post('password');
if (strcmp($password, $confirmation_password))
{
$this->form_validation->set_message('check_information', 'password and confirmation password doesn\'t match');
return FALSE;
}
else {
return TRUE;
}
}
答案 1 :(得分:1)
有一个简单的解决方案,试试这个:
$this->form_validation->set_rules('confirmation_password', 'Password Confirmation', 'required|matches[password]');