无法在codeigniter中执行登录重定向

时间:2015-11-26 09:15:32

标签: php codeigniter

我正在尝试使用codeigniter开发一个登录面板,但我无法这样做,因为我相信我的概念不是那么清楚,或者我做错了什么,请帮助我解决这个问题

控制器和GT; admin.php的

class admin extends CI_Controller {

public function __construct() {
    parent::__construct();
    $this->load->model('verify_user');
}

public function verify() {
    $this->load->library('form_validation');
    $username = $this->form_validation->set_rules('username', '', 'required|trim');
    $password = $this->form_validation->set_rules('password', '', 'required|trim');

    if($this->form_validation->run()) {
        $this->verify_user->can_log_in();
        redirect('admin/dashboard');
    } else {
        $this->load->view('admin/login');
    }
}

public function dashboard() {
    if($this->session->userdata('is_logged_id') == true) {
        $this->load->view('admin/dashboard');
    } else {
        redirect('admin/login');
    }
}

模型> verify_users.php

class verify_user extends CI_Model {
    public function __construct() {
        parent::__construct();
    }

    public function can_log_in() {
        $this->db->where('username', $this->input->post('username'));
        $this->db->where('password', $this->input->post('password'));

        $query = $this->db->get('users');

        $query2 = $this->db->get_where('users', array(
            'username' => $this->input->post('username')
        ));
        if($query2->num_rows() == 1) {
            $name  = $query2->row()->first_name . " " . $query2->row()->last_name;
        }
        if($query->num_rows() == 1) {

            $query = $this->db->get_where('users', array(
                'username' => $this->input->post('username')
            ));

            $data = array(
                'username' => $this->input->post('username'),
                'is_logged_in' => 1
            );

            $this->session->set_userdata('name', $name);
            $this->session->set_userdata($data);

            return true;
        } else {
            $data['message'] = 'Incorrect username/password';
            $this->load->view('admin/login', $data);
        }
    }
}

当我使用正确的用户名和密码登录时,当我将模型脚本放在验证函数中运行完美时,它会重定向回login.php

请帮我解决这个问题

2 个答案:

答案 0 :(得分:1)

这是对您的实施方式的最接近的可能修复。 您需要考虑阅读有关MVC的更多信息。 尝试用以下方法替换您的控制器:

    class admin extends CI_Controller {

    public function __construct() {
        parent::__construct();
        $this->load->model('verify_user');
    }

    public function verify() {
        $this->load->library('form_validation');
        $username = $this->form_validation->set_rules('username', '', 'required|trim');
        $password = $this->form_validation->set_rules('password', '', 'required|trim');

        if($this->form_validation->run() && $this->verify_user->can_log_in()) {
            redirect('admin/dashboard');
        } else {
            $this->load->view('admin/login');
        }
    }

    public function dashboard() {
        if($this->session->userdata('is_logged_in') == "1") {
            $this->load->view('admin/dashboard');
        } else {
            redirect('admin/login');
        }
    }
}

你的模特用这个:

class verify_user extends CI_Model {
    public function __construct() {
        parent::__construct();
    }

    public function can_log_in() {
        $this->db->where('username', $this->input->post('username'));
        $this->db->where('password', $this->input->post('password'));

        $query = $this->db->get('users');

        $query2 = $this->db->get_where('users', array(
                'username' => $this->input->post('username')
        ));
        if($query2->num_rows() == 1) {
            $name  = $query2->row()->first_name . " " . $query2->row()->last_name;
        }
        if($query->num_rows() == 1) {

            $query = $this->db->get_where('users', array(
                    'username' => $this->input->post('username')
            ));

            $data = array(
                    'username' => $this->input->post('username'),
                    'is_logged_in' => "1"
            );

            $this->session->set_userdata('name', $name);
            $this->session->set_userdata($data);

            return true;
        } else {
            $data['message'] = 'Incorrect username/password';
            return false;
        }
    }
}

答案 1 :(得分:0)

检查

class admin extends CI_Controller {
      ^// this should be Admin

IN模型

else {
      //$data['message'] = 'Incorrect username/password';
      //$this->load->view('admin/login', $data);
      //dont load view in model
      return false;
 }

在控制器中

if($this->form_validation->run()) {
    $res = $this->verify_user->can_log_in();
    if($res)
        redirect('admin/dashboard');
    else
        redirect('admin/login');
} else {
    $this->load->view('admin/login');
}

修复这3个错误应该对你有帮助。