【问题标题】:Codeigniter can not redirectCodeigniter 无法重定向
【发布时间】:2025-12-07 02:10:02
【问题描述】:

我正在尝试学习 codeigniter,我从基本的登录功能开始。一切正常,直到我想将成员重定向到他们的主页。 我似乎 codeigniter 无法重定向到它。它总是停在这个网址:

我希望这个重定向到站点/成员区域,如 mycode。这是我的控制器代码:

class login extends ci_controller{
function index(){
    $data['main_content'] = 'login_form';
    $this->load->view('includes/template.php', $data);
}
function validate_credentials(){
    $this->load->model('membership_model');
    $query = $this->membership_model->validate();

        if($query)//user's credentails validated
        {
             $data = array(
            'username' => $this->input->post('username'),
            'is_logged_in' => true);
        $this->session->set_userdata($data);
        redirect('site/members_area');
    }
    else
    {
        $this->index();
    }
}

}

这是我的模型代码:

class Membership_model extends ci_model{
function validate(){
    $this->db->where('username', $this->input->post('username'));
    $this->db->where('password', md5($this->input->post('password')));
    $query = $this->db->get('membership');

    if($query->num_rows == 1){
        return true;
    }
}

}

我已经在我的自动加载中输入了帮助程序 url 和表单,但它仍然不起作用。 有人可以帮忙吗?

【问题讨论】:

  • 在您的模型中将if($query->num_rows == 1){ 更改为if($query->num_rows > 0) {
  • 也不要使用 MD5 进行密码散列,这是非常不安全的,使用此 php.net/manual/en/function.password-hash.php 进行散列并使用此验证 php.net/manual/en/function.password-verify.php
  • 我确实从 == 1 更改为 >0 但没有任何变化。我的意思是我的代码仍然无法运行。我知道md5对密码不好,这个只是codeigniter的一种做法。
  • Login, CI_Controller, CI_Model.
  • 还是不行。

标签: php .htaccess codeigniter redirect


【解决方案1】:

num_rows 是一个函数,应该有这样的括号:$query->num_rows()

您可以消除 if 并简单地使用

return $query->num_rows() > 0;

【讨论】: