繁体   English   中英

页面未正确重定向Codeigniter错误

[英]Page isn't redirecting properly Codeigniter error

我正在尝试学习Codeigniter,我有以下代码,它给我“页面未正确重定向...”错误。

public function user_login_process() {

    $this->form_validation->set_rules('username', 'Username', 'trim|required');
    $this->form_validation->set_rules('password', 'Password', 'trim|required');
    $classes['class'] = $this->show_classes();
    $this->load->view('header');
    if ($this->form_validation->run() == FALSE) {
        if (isset($this->session->userdata['logged_in'])) {
            $this->load->view('admin_page', $classes);
        } else {
            $this->load->view('login_form');
        }
    } else {
        $data = array(
            'username' => $this->input->post('username'),
            'password' => $this->input->post('password')
        );
        $result = $this->login_database->login($data);
        if ($result == TRUE) {
            $username = $this->input->post('username');
            $result = $this->login_database->read_user_information($username);
            if ($result != false) {
                $session_data = array(
                    'username' => $result[0]->user_name,
                    'email' => $result[0]->user_email,
                );
                $this->session->set_userdata('logged_in', $session_data);
                $this->load->view('admin_page', $classes);
            }
        } else {
            $data = array(
                'error_message' => 'Invalid Username or Password'
            );
            $this->load->view('login_form', $data);
        }
    }
}

如果我注释掉这一行

$this->load->view('header');

页面正确加载,没有标题。 但是,每当我尝试加载标头时,它都会失败。 我认为问题不在于标题,因为它可以正确加载到其他页面上。

一些上下文:我正在尝试创建一个管理面板,有一个登录页面,一个注册页面和一个管理页面。 成功登录后,此代码段处理管理页面的加载。 登录页面和注册页面均正确加载了头文件。

我调查了一些相关的问题,但似乎无法找到正确的解决方案,因为我不知道实际的问题是什么。 任何帮助表示赞赏。

在您的代码中,重定向和视图文件加载未加载。 下面,我在需要的地方写了正确的代码和注释。

if (isset($this->session->userdata['logged_in'])) {
        redirect(base_url('YOUR_AUTHORIZED_CONTROLLER_OR_FUNCTION'));
    }

    $this->form_validation->set_rules('username', 'Username', 'trim|required');
    $this->form_validation->set_rules('password', 'Password', 'trim|required');
    $classes['class'] = $this->show_classes();

    $this->load->view('header');
    if ($this->form_validation->run() == FALSE) {
        // $this->session->userdata['logged_in'] this should not be used here. Instead you should validate your controller or methods for authorized area for logged in users
        $this->load->view('login_form');
    } else {
        $data = array(
            'username' => $this->input->post('username'),
            'password' => $this->input->post('password')
        );
        $result = $this->login_database->login($data);
        if ($result == TRUE) {
            $username = $this->input->post('username');
            $result = $this->login_database->read_user_information($username);
            if ($result != false) {
                $session_data = array(
                    'username' => $result[0]->user_name,
                    'email' => $result[0]->user_email,
                );
                $this->session->set_userdata('logged_in', $session_data);

                // Commenting below line as you should redirect to your default authorised URL  
                //$this->load->view('admin_page', $classes);
                $this->session->set_flashdata('success', 'Great! You have successfully logged in.');
                redirect(base_url('YOUR_AUTHORIZED_DEFAULT_CONTROLLER_OR_FUNCTION'));
            }
        } else {
            $this->session->set_flashdata('error', 'Invalid Username or Password');

            // Redirect to login method and controller
            redirect(base_url('LOGIN_ACTION'));
        }
    }

视图:在您的视图中,使用以下行显示错误/成功消息。 最好创建新的视图文件以显示其中的所有消息,并在加载头视图后立即加载该视图:

<?php echo $this->session->flashdata('error'); ?>
<?php echo $this->session->flashdata('success'); ?>

让我知道您是否需要任何澄清。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM