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');
...
我是 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');
...