【问题标题】:Getting current session id when session data is stored in the ci_Sessions table当会话数据存储在 ci_Sessions 表中时获取当前会话 ID
【发布时间】:2017-04-03 15:26:03
【问题描述】:

我正在使用 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

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

即使有多个用户登录,总是要获取我的会话数据?

【问题讨论】:

  • 从逻辑上讲,我想它应该给你会话,因为你的会话是最后一个访问脚本的会话。
  • 添加 $this->load->library('session');
  • 我已经在库和驱动程序中自动加载了它。

标签: php codeigniter session


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    它不起作用的另一个原因:ci_sessions 表中的 id 不是简单的递增整数,它是这样的:5f53811d120de015d8189d72fcfb0a13242b382a。并且按 id 排序将简单地放入随机顺序。最多您可以尝试按“时间戳”而不是 id 进行排序。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-16
      • 2023-03-25
      • 2017-06-29
      • 2014-02-08
      • 2014-11-22
      • 1970-01-01
      相关资源
      最近更新 更多