我发现其他人有同样的问题,但无法找到我的问题的解决方案。如果使用回调函数登录失败,则不会显示我的错误消息。
loginController.php
@user.items.where(is_new: true).destroy_all
users_model.php
public function validate_credentials () {
$this->load->model('users_model');
$query = $this->users_model->validate();
if($query)
{
$data = array(
'username' => $this->input->post('username'),
'is_logged_in' => true
);
$this->session->set_userdata($data);
redirect('/member/homes');
}
else
{
$this->form_validation->set_rules('username', 'Username', 'trim|required|callback_check_username_exists'); //test
$data['lofin_failed'] = 'Wrong usename or password'; // I added this line in the meantime to display an error message.
$this->load->view('header');
$this->load->view('navbar');
$this->load->view('loginForm', $data);
$this->load->view('footer');
}
}
public function check_username_exists()
{
$this->form_validation->set_message('check_username_exists', 'Wrong username or password!!');
return false;
}
答案 0 :(得分:0)
有表单验证规则:
is_unique [table.field]
如果用户名是唯一的,则检查数据库,您不需要回调。
您可以在此处查看https://ellislab.com/codeigniter/user-guide/libraries/form_validation.html
你可以使用session flashdata而不是$ data ['lofin_failed'] 你可以在https://ellislab.com/codeigniter/user-guide/libraries/sessions.html
查看答案 1 :(得分:0)
我发现了问题。我只是忘了在页面开头添加echo validation_errors();
....