【问题标题】:Codeigniter URL should change based on pageCodeigniter URL 应根据页面更改
【发布时间】:2013-03-15 08:29:59
【问题描述】:

我有这个控制器功能:

public function login()
{
                            .......
        if ($this->form_validation->run() == FALSE)
        {
            $this->load->view('login');
        }
        else
        {
            if(isset($username) && isset($password))
            {

                if(isset($result) && $result->num_rows() > 0)
                {
                    $result = $result->result_array(); 
                    $data['result'] = $result;

                    $this->session->set_userdata($data);
                            $this->load->view('profile', $data);
                }else{
                    show_error('Authentication was not successful!');
                }   
            }
        }

    }else{
        $this->load->view('login');
    }
}

一旦成功,它会进入个人资料页面并显示数据。唯一的问题是在用户输入凭据之前显示的 URL 以及加载 profile.php 后显示的 URL 是相同的,即 domain.com/profile/login。我希望登录成功后,登录用户的用户名显示为:domain.com/profile/username。这可能吗?如果没有,至少我可以从 URL 中删除登录段吗?

【问题讨论】:

    标签: codeigniter codeigniter-2


    【解决方案1】:

    您可以在检查数据后使用重定向。如果输入正确,则页面重定向到/profile/username,如果不在同一页面上。

    if(<success input check>)
        redirect(base_url().'profile/'.$username);
    else{
        $this->load->view('login');
    }
    

    我假设您检查每个页面的授权。

    【讨论】:

    • 如果您需要检查每个页面的登录状态,那么只需扩展 CI_Controller 构造
    • @Rooneyl 是的。或者您可以在 MY_Controller 中创建方法并检查选择性控制器上的登录状态
    • 我会有两个扩展控制器;一个用于登录,另一个用于一般访问。这两个都可以扩展 MY_Controller 是否有共同的方法。
    • 使用redirect('profile/' . $username); 而不是base_url(),因为重定向会自动为您执行此操作。
    猜你喜欢
    • 1970-01-01
    • 2012-02-15
    • 1970-01-01
    • 1970-01-01
    • 2018-07-04
    • 2021-05-15
    • 2013-05-29
    • 2020-12-22
    • 2020-12-21
    相关资源
    最近更新 更多