2013-02-16 77 views
0

我使用Codeigniter的Session类将会话值存储在数据库中。包含在userdata字段内的是用户的用户名和其他值。Codeigniter会话 - 访问来自DB的所有用户的用户数据值

我想从每个userdata字段获得username,其中lastactivity>> =假设5分钟。

我能想到的唯一办法做到这一点是:

  • 搜索在最后5分钟的活跃用户
  • 获得用户数据返回的每个行
  • unserialise用户数据
  • 提取用户名

但是,这似乎是漫长的道路。有没有更清洁/更好的方法来做到这一点?

+0

您是否希望将数据库中的所有用户名等数据存储到CI会话的最后一个活动> x? – sandip 2013-02-16 06:10:15

+0

DB中的userdata字段将包含一些不同的值,我只需要提取其中的一个。 – 2013-02-16 06:20:18

回答

1

试试看看这个代码。

$query = $this->db->select('user_data')->get('ci_sessions'); 

$user = array(); /* array to store the user data we fetch */ 

foreach ($query->result() as $row) 
{ 
    $udata = unserialize($row->user_data); 

    /* put data in array using username as key */ 
    $user[$udata['user_name']] = $udata['user_role']; 
} 

从结果数组中,你可以获取所需的信息。

+0

这与我列出的解决方案完全相同,并表示如果可能,我正在尽量避免。我意识到这可能是必要的,但只能作为最后的手段。 – 2013-02-16 12:04:14