Codeigniter - 检查用户是否已登录并存在(是真实用户)

6

我正在尝试在用户登录我的网站时设置会话数据。

因此,如果用户存在于数据库中,我会设置一个会话数据,例如:$this->session->set_userdata('user_exists','1');

现在每次我想检查用户是否存在并已登录时,我都会这样做:

if($this->session->userdata('user_exists')){
 //do somenthing for logged user
}

现在我在想,既然用户登录并且我设置了一个会话参数,这是否意味着用户已经登录并存在于数据库中呢?这是真的吗?还是我会遇到安全问题?
注:我正在使用会话数据库。

没问题,但是通过启用config.php文件加密您的会话。此外,添加一些长度值以识别会话。 - Sundar
@Sundar 是的,我已经在使用加密密钥了,所以检查会话数据是否存在就相当于检查用户是否在数据库中,这样我就可以避免再查询一次数据库来查找用户了? - itsme
@Sundar 如果你确定把它作为答案,我会接受。 - itsme
你的答案是正确的,没有什么需要补充的。你是对的。 - Sundar
1个回答

10
//会话加密是强制性要求。
  $sess_id = $this->session->userdata('user_id');

   if(!empty($sess_id))
   {
        redirect(site_url().'/reports');

   }else{

        $this->session->set_userdata(array('msg'=>'')); 
        //load the login page
        $this->load->view('login/index');        
   }    

1
我认为!empty()是无用的,因为session->userdata返回false或数据;) - itsme
1
是的,empty(0)总是返回true。因此,empty(1)为false。 - Sundar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接