在会话数据存储在ci_Sessions表中时获取当前会话ID

时间:2017-04-03 06:52:07

标签: php codeigniter session

我正在使用ion auth来处理我对控制器的授权,并且我将会话数据存储到数据库中。我可以看到会话信息存储在数据库中。

我以管理员身份登录,我需要更新当前会话数据以显示其他用户已登录,简而言之,我正在尝试通过使用我知道的用户ID更新会话用户ID来模拟用户。

$user = $this->ion_auth->user()->row();

echo "<pre>";
//print_r($res);
    echo 'Hello  '.$user->email;
echo "</pre>";

    $this->db->order_by('id', 'DESC');
    $this->db->limit(1);
    $last_session = $this->db->get('ci_sessions')->row_array();

    print_r($last_session['data']);//prints current session data

第一个echo获取登录用户的正确电子邮件以及正确的会话数据。我的问题是,这一行print_r($last_session['data']);

即使有多个用户登录,

总是会得到我的会话数据吗?

2 个答案:

答案 0 :(得分:0)

不幸的是没有。会话数据总是每隔5分钟(默认)更改一次,这在config.php $config['sess_time_to_update']中设置。此更改仅更新现有会话记录(如果存在),如果不存在则创建新记录。您可以在system / libraries / Session.php中的Session.php中看到它是如何处理的。

答案 1 :(得分:0)

它无法工作的另一个原因:ci_sessions表中的id不是一个简单的升级整数,它是这样的:5f53811d120de015d8189d72fcfb0a13242b382a。按id排序只会随机排序。最多可以通过“时间戳”来尝试订购。而不是id。

我不确定Jeffrey提到的问题是否与ion_auth有关。