【问题标题】:Codeigniter - get all users session dataCodeigniter - 获取所有用户会话数据
【发布时间】:2014-04-04 16:15:38
【问题描述】:

我需要获取所有会话数据并对它们采取一些操作,有没有可能的方法来获取它们,我找到了如何在 php 中解决它,但 codeigniter 使用它自己的自定义会话库。

原生php

$_SESSION

如何在 codeigniter 中做到这一点

【问题讨论】:

  • 这将帮助您$this->session->all_userdata();。在这个 sn-p 之前加载会话库。
  • 是否有任何您想要获取的特定数据在 codeigniter 会话类中不可用?
  • @RahilWazir $this->session->all_userdata();没有帮助,因为它对每个用户只有一个数组,我尝试做的前假设我有 2 个用户登录到我的系统用户 A 和 B,我的问题是我如何获取用户 B 的会话数据用户 A. 我够清楚了吗,谢谢你的帮助
  • @sabri 您可以在用户表中创建一个列status,默认值为0,当用户登录时执行查询并将status 值更改为1。查询所有状态为1的用户,你会得到登录用户的数据。请记住在注销后将其设置回0

标签: php session codeigniter-3 session-variables


【解决方案1】:

您可以使用数据库会话。 因此数据将存储到数据库中。 见Saving Session Data to a Database

如果您没有数据库支持,只需使用 cookie 并使用

获取数据
$username = 'John Doe';
$this->session->set_userdata('username',$username);
$var = $this->session->userdata;
echo $var['username'];

【讨论】:

  • 是的,这将是一个解决方案,但在我的情况下,我不能使用 db :) +1
  • 您可以从 codeigniter 配置文件中使用存储在 cookie 中的 session。
【解决方案2】:

要获取所有会话数据,您可以使用$this->session->all_userdata();

要打印所有会话变量,请在代码中的任何位置使用此行:

echo '<pre>'; print_r($this->session->all_userdata());exit;

【讨论】:

    【解决方案3】:

    如果您知道如何在 PHP 中执行此操作,为什么不实现它,而不使用 codeigniter 会话类?我的经验是 CI 会话类被 ajax 调用和代理服务器破坏得很厉害,所以最好避免。

    【讨论】:

      【解决方案4】:

      要获取所有用户会话数据。首先我们需要在控制器构造函数中手动初始化会话类,使用以下代码。

      $this->load->library('session');
      

      然后我们使用下面的代码。

      $this->session->all_userdata();
      

      上面的函数返回一个关联数组,如下所示。

      Array
      ( [session_id] => 4a5b5dca45708ab1a84364eeb455j007 [ip_address] => 127.0.0.1 [user_agent] => Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; [last_activity] => 1102132923
      )
      

      完整的 Ci Session 教程。请参考link

      【讨论】:

        【解决方案5】:

        如果您想以我的方式查看所有内容,请将$this-&gt;session 转换为数组,然后将print_r 转换为数组。

                $this->load->library('session');
                echo "<pre>". print_r((array)$this->session, true) ."</pre>";
        

        希望这会有所帮助。

        【讨论】:

          【解决方案6】:
          $this->session->userdata('data')->username
          

          【讨论】:

          • 从 codeigniter 会话中的数据中获取数据,它对我有用
          【解决方案7】:

          打印所有会话数据

          echo '<pre>'; print_r($this->session);
          

          【讨论】:

            【解决方案8】:

            我需要类似的东西来查看所有活动会话

            var_dump($this->session->all_userdata()); 
            

            上面的代码完成了这项工作。详情请点击以下链接

            https://codeigniter.com/userguide3/libraries/sessions.html#CI_Session::all_userdata

            【讨论】:

              猜你喜欢
              • 2016-07-03
              • 2012-05-17
              • 1970-01-01
              • 1970-01-01
              • 2017-04-13
              • 2019-08-26
              • 1970-01-01
              • 1970-01-01
              • 2016-05-28
              相关资源
              最近更新 更多