CodeIgniter - 无法访问与您的字段名称对应的错误消息 - 使用strcmp

时间:2015-09-18 13:35:53

标签: php codeigniter

我目前正在使用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;
        }

}

有人能判断我的代码中是否有错误吗? 我自愿向您展示我的代码的一部分,以避免我的帖子太长。

由于

2 个答案:

答案 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]');