2013-03-15 47 views
0

对我有这样的控制器功能:笨URL应该改变基于

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'); 
    } 
} 

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

回答

2

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

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

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

+1

如果您需要检查每个页面上的登录状态,那么只需扩展CI_Controller构造 – Rooneyl 2013-03-15 10:06:55

+1

@Roneone true即可。或者你可以在MY_Controller中创建方法并在选择控制器上检查登录状态 – safarov 2013-03-15 11:56:58

+0

我将有两个扩展控制器;一个用于登录,另一个用于一般访问。这两个都可以扩展MY_Controller是有两个常用的方法。 – Rooneyl 2013-03-15 12:49:39