CodeIgniter重定向问题

时间:2017-07-05 04:19:25

标签: php codeigniter redirect

我在这里创建一个登录系统。验证用户后,控制器会将页面重定向到home。php。

这里有2页login_registration.php和home.php

login_registration.php包含登录和注册表单,用户将从此处重定向到home.php。这两个文件都在路径C:\wamp\www\CI-Project_1\application\views\login

问题是重定向时显示404 Page Not Found

 class Login extends CI_Controller {
    public function __construct(){
        parent::__construct();
                $this->load->helper('url');
        //LOAD MODELS HERE
        $this->load->model('Login_model');
    }

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

    function login_user(){
        $login_btn = $this->input->post('login_btn');

        if($login_btn == TRUE){
            $arr['login'] = array(
                'username'=>$this->input->post('username'),
                'password'=>$this->input->post('password')
            );

            $query = $this->Login_model->users_login($arr);

            if($query->num_rows() > 0 && $query->num_rows() == 1){
                $this->load->library('session');
                $this->session->set_userdata($arr['login']);
                redirect('login/home.php', 'location');
            }
            else
            {
                $this->index();
            }
        }
        else
        {
            $this->index();
        }
    }
}

感谢提前

6 个答案:

答案 0 :(得分:2)

根据codeigniter views documentation

  

除非使用.php以外的其他内容,否则不需要指定.php文件扩展名。


所以,正确的代码如下:

$this->load->view('login/login_registration');


此外,您没有正确使用重定向功能,因为我在登录控制器中看不到任何主页功能。如果您在登录控制器内部以某种方式拥有主页功能,那么为什么在功能名称后使用 .php


查看codeigniter redirect documentation了解详情。

答案 1 :(得分:1)

您必须提及您想要重定向此类内容的控制器名称和方法名称

redirect('controllername/methodname');

答案 2 :(得分:0)

试试这个,

class Login extends CI_Controller {
public function __construct(){
    parent::__construct();
            $this->load->helper('url');
    //LOAD MODELS HERE
    $this->load->model('Login_model');
}

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

public function home(){
    $this->load->view('login/home.php');
}

function login_user(){
    $login_btn = $this->input->post('login_btn');

    if($login_btn == TRUE){
        $arr['login'] = array(
            'username'=>$this->input->post('username'),
            'password'=>$this->input->post('password')
        );

        $query = $this->Login_model->users_login($arr);

        if($query->num_rows() > 0 && $query->num_rows() == 1){
            $this->load->library('session');
            $this->session->set_userdata($arr['login']);
            redirect('login/home', 'location');
        }
        else
        {
            $this->index();
        }
    }
    else
    {
        $this->index();
    }
}
}

答案 3 :(得分:0)

对于重定向和$this->load->view,请勿使用.php

使用以下内容:     redirect('login/home', 'location');

答案 4 :(得分:0)

如果你想从控制器调用任何方法,你可以重定向,然后你可以像这样重定向:

public function home(){
    $this->load->view('login/home.php');
}

redirect('login/home', 'location');

但我认为您不需要重定向就可以像加载注册视图一样只加载视图文件。所以你只需加载视图而不是重定向..

$this->load->view('login/home.php');

答案 5 :(得分:0)

要重定向CI中的任何功能,可以使用redirect('controller n_name/function_name','refresh');