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

如何获取codeigniter会话数据库blob值?,codeigniter,session,blob,Codeigniter,Session,Blob,使用Codeigniter会话 我已创建ci_会话表。 在此表中,我将session数据保存在blob数据类型中 $sess_data= array( 'logged_in' => TRUE ); $this->session->set_userdata($sess_data); 为了统计所有在线用户,我需要在blob数据类型中获取logged\u in==1值 $sess_data= array( 'logged_in' => TRUE

使用
Codeigniter
会话

我已创建ci_会话表。
在此表中,我将
session
数据保存在
blob
数据类型中

$sess_data= array(
        'logged_in' => TRUE
);
$this->session->set_userdata($sess_data);
为了统计所有在线用户,我需要在
blob
数据类型中获取
logged\u in==1

$sess_data= array(
        'logged_in' => TRUE
);
$this->session->set_userdata($sess_data);
例如,
user 1
使用Chrome web浏览器登录
User2
是用Mozilla登录的。在
数据库中
有两个会话具有不同的会话id

如何获取此
ci\u会话表中的所有
logged\u in==1
值?

这是我的模型函数。
请帮我填写这个函数中的哪个位置

public function count_online_users(){
$this->db->select('*');
$this->db->from('ci_session');
$this->db->where(...........);
$query = $this->db->get()->num_rows();
return $query;
}
检查你必须遵循的方法

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

获得登录用户数后,
登录用户数

// 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 request for update字段。关闭窗口时,将调用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
        }
    }
}  

您不能从ci_会话表中统计登录用户您建议OP在“用户”表中添加“登录”列?在会话到期或用户未明确注销就结束的情况下,您建议如何保持列值有效?是否可以在blob数据中获取数组值?@omurgokyar是的,很可能我实际输入并更新blob数据类型的数据列中的logged_in=1值。但当我尝试在blob数据类型中获取这个数组值时,我遇到了一些问题。如何在Codeigniter中获取blob数据类型中的任何数组值。@ImBS
CREATE TABLE IF NOT EXISTS ci_sessions(id varchar(128)NOT NULL,ip_address varchar(45)NOT NULL,timestamp int(10)unsigned DEFAULT 0 NOT NULL,data blob NOT NULL,KEY cisociall_sessions\u timestamp(timestamp))ENGINE=InnoDB默认字符集=utf8 COLLATE=utf8\U unicode\U ci;ALTER TABLE ci_会话添加主键(id、ip_地址)