Codeigniter:限制用户访问自己的个人资料页面

Codeigniter: Restricting user access to own profile page

我是 Codeigniter 的新手,正在尝试限制个人资料所有者查看、编辑或删除的用户个人资料。我已经成功地限制了未登录用户对另一个功能的配置文件的访问。我的问题是将用户限制在他或她自己的个人资料中。

我已经让 urls 使用用户名,这在我的数据库中被命名为 'login.' 我想要做的是将数据库中的用户名与 url。

任何提示和意见都会有所帮助。

判断用户是否登录的控制器:

public function _is_logged_user() 
{ 
$id = $this->uri->segment(3); 
$data['user_profile'] = $this->user_model->get_user_profile($id);
$logged = $this->session->userdata('user_id');
   if($id == $logged) { 
     return TRUE; 
      }  else { 
     return FALSE; 
     }  
}

我的 user_model 中的 get_user_profile 部分:

public function get($user_id = null) 
{ 

if ($user_id === null) { 
   $query = $this->db->get('user');
   } elseif(is_array($user_id)) {        
   $query = $this->db->get_where('user', $user_id);        
   } else { 
   $query = $this->db->get_where('user',['user_id' => $user_id]); 
   }         
   return $query->result_array();    
}  

在您的用户编辑控制器中,您应该检查登录的用户名(存储在 $_SESSION 变量中)是否与正在编辑的用户匹配。

在 codeigniter 中,您可以使用 $this->session->userdata() 函数访问它

如果匹配,显示编辑表单,否则显示一些错误信息。

所以在您的用户编辑控制器中,您可能有。

if $this->_is_logged_user(){
    $data['user_profile'] = $this->user_model->get_user_profile($id);
    $this->display_edit($data);
} 
else{
    $this->display_error();
}

我可能不会在 _is_logged_user() 函数中获取用户数据

public function _is_logged_user() 
{ 
    $id = $this->uri->segment(3); 
    // no need for the line below, we're not using the data here
    // $data['user_profile'] = $this->user_model->get_user_profile($id);
    $logged = $this->session->userdata('user_id');
    ...