Codeigniter:控制器函数名称显示在url中,如何更改查看文件名?

时间:2012-09-03 16:00:33

标签: codeigniter url controller routes

想知道是否有人可以指导我做错了(或需要做的)并认为问题出在我的路线文件中。当用户显示登录表单时,例如,在提交URL显示后,他们的用户名错误:http://localhost:8888/codeigniter/login/login_validation。如果成功并登录到管理区域(从数据库中提取新闻文章),则仍会显示此网址。我想知道是否有办法让它http://localhost:8888/codeigniter/news.我查看了我的路线文件夹,我试图使用'通配符'并且不成功。这是我的代码供参考,所需的任何其他信息或文件让我知道!感谢。

控制器:

  class Login extends CI_Controller {

    public function __construct() {
        parent::__construct();

    }

        public function index() {
            $this->load->view('login');
    }


    //Validate login area
    public function login_validation() {
        $this->load->library('form_validation');
        $this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean|callback_username_check');
        $this->form_validation->set_rules('password', 'Password', 'required|xss_clean|callback_password_check');

          if($this->form_validation->run() == FALSE) {
             //Field validation failed.  User redirected to login page
             $this->index();

             }else{
                 $this->load->model('user_model');
                 $query = $this->user_model->login_details();

                 // if the user's credentials validated...
                if($query) {
                    $data = array(
                        'username' => $this->input->post('username'),
                        'is_logged_in' => true
                    );

                    $this->session->set_userdata($data);
                    redirect('news');

                }else{
                 $data['error'] ="Invalid Username or Password";
                 $this->load->view('login',$data);  
                }

            }
    }

            function logout() {
       $this->session->sess_destroy();
       $this->index();
}

}

来自user_model.php的

login_details函数

           function login_details() {
        $this->db->where('username', $this->input->post('username'));
        $this->db->where('password', md5($this->input->post('password')));
        $query = $this->db->get('login');

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

1 个答案:

答案 0 :(得分:1)

如果您正在登录任何类型的系统,则需要使用CodeIgniter的Session类来存储会话。如果存在controllers/news.php,您可以设置会话并立即使用redirect('news');执行重定向。不需要$this->load->view()因为这个逻辑无论如何都会在news.php的索引中,而且你会复制代码。

我不确定$this->user_model->login_details()返回了什么,但我假设falsenull,因为您说CodeIgniter正在将您发送回login视图。进入login_details()函数并确保一切正常(您可能也想发布它)。另外,如果您进行了更改,请为我们发布routes.php文件。

注意:Space是一个有效的密码字符,不要trim它或密码中带有前导或尾随空格的人将无法进入;)