使用Codeigniter
session
。
我创建了 ci_session 表
在此表中,我在session
数据类型中保存blob
个数据。
$sess_data= array(
'logged_in' => TRUE
);
$this->session->set_userdata($sess_data);
为了统计所有在线用户,我需要在logged_in==1
数据类型中获得blob
值。
例如,使用Chrome网络浏览器登录user 1
。 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;
}
答案 0 :(得分: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
}
}
}