如何获得codeigniter会话数据库blob值?

问题描述 投票:0回答:1

随着Codeigniter session。 我创建了ci_session表。 在此表中,我将session数据保存在blob数据类型中。

$sess_data= array(
        'logged_in' => TRUE
);
$this->session->set_userdata($sess_data);

为了统计所有在线用户,我需要在logged_in==1数据类型中获取blob值。

例如,user 1已使用Chrome网络浏览器登录。 User2已登录Mozilla。在database有2个会话,会话ID不同。

我怎样才能在这个logged_in==1中获得所有ci_session table值? 这是我的模特功能。 请帮我填写这个功能的哪个地方?

public function count_online_users(){
$this->db->select('*');
$this->db->from('ci_session');
$this->db->where(...........);
$query = $this->db->get()->num_rows();
return $query;
}
codeigniter session blob
1个回答
0
投票

检查这个你必须遵循的方法

首先,您必须将logged_in = 1表中的users更新为您定义的名称

在你获得用户数量之后是logged_in

// Update user in to call this function 
$data = array(
                 'logged_in' => '1'
             );
public function update_user($user_id, $data)
{
    $this->db->where('id',$user_id);
    $this->db->update('users',$data);
}

// After you get logged in user in total value
public function count_online_users()
{
    $this->db->select('*');
    $this->db->from('users');
    $this->db->where('logged_in','1');
    $query = $this->db->get()->num_rows();
    return $query;
}

您可以使用javascript和asynchron请求更新字段。关闭窗口时,会调用window.onunload的处理程序

var unloadHandler = function(e){
    //here ajax request to close session
};
window.unload = unloadHandler;

要解决重定向问题,php方面你可以使用一个计数器

class someController  extends Controller {
    public function methodWithRedirection(){
        $this->session->set_userdata('isRedirection', 1);
        //here you can redirect  
    }
}
class homeController extends Controller{
    public function closeConnection(){
        $this->load->library('session');
        if($this->session->userdata('isRedirection')!== 1){
            //destroy session
        }
    }
}  
© www.soinside.com 2019 - 2024. All rights reserved.