【问题标题】:Setting Session_id in CodeIgniter在 CodeIgniter 中设置 Session_id
【发布时间】:2011-07-11 20:59:41
【问题描述】:

在标准 PHP 中,我可以通过以下方式设置会话 ID:

$my_session_id = $_GET['session_id']; //gets the session ID successfully
session_id($my_session_id);   //sets the session with my session_id
session_start();  //starts session.

如何使用 CodeIgniter 做同样的事情?我正在尝试关注:

$my_session_id = $_GET['session_id']; //gets the session ID successfully
$this->session->userdata('session_id', $my_session_id); //it won't set the session with my id.
print_r($this->session->userdata);

我犯了一些错误吗?请帮助我,因为我在这个问题上浪费了几个小时。如果 CodeIgniter Session 类有问题,我可以使用标准的 PHP 代码来启动会话吗?我也尝试将标准代码放在 CodeIgniter 中,但它仍然没有设置 session_id。我也设置了$config['sess_match_useragent'] = FALSE;

【问题讨论】:

    标签: php session codeigniter


    【解决方案1】:

    您不需要这样做,codeigniter 会为您完成这一切。

    如果您希望获取会话 id,您可以通过调用:

    $session_id = $this->session->userdata('session_id');
    

    但是您可以解决它:(请注意,这篇文章已有 3 年历史,我不确定是否仍然有必要)

    http://mumrah.net/2008/06/codeigniter-session-id/

    【讨论】:

      【解决方案2】:

      这是我刚刚对另一个 question 提出的建议。将其放在MY_Session__construct 中(未经测试,不能用于加密)

      public function __construct()
      {
         if( isset( $_GET['session_id'] ) ) 
              $_COOKIE[ $this->sess_cookie_name ] = $_GET['session_id'];
         // Session now looks up $_COOKIE[ 'session_id' ] to get the session_id
         parent::__construct()
      }
      

      【讨论】:

      • 谢谢,我没有 MY_Session 文件,我需要在 CodeIgniter 的库文件夹或 Core 文件夹中创建 MY_Session.php 文件吗?创建并发布此代码后,我将如何调用 MY_Session? (对不起,我是 CodeIgniter 或任何框架的新手)
      • 如果您将 MY_Session.php 文件放在库文件夹中,它将被使用而不是 CI_Session
      【解决方案3】:

      使用它在codeigniter中设置session_id:

      $this->session->set_userdata( array('session_id', $your_session_id) );
      

      $session_id = $this->session->userdata('session_id');
      

      再读一遍。

      【讨论】:

      • 它会将我的会话 ID 设置为 session_id [1] ,即使我已将其放在上一行:$this->session->unset_userdata('session_id');
      【解决方案4】:

      您应该始终在修改任何会话变量之前启动会话。

      我相信启动 CodeIgniter 会话您可以执行以下操作;

      $this->load->library('session');
      $my_session_id = $_GET['session_id']; //gets the session ID successfully
      $this->session->userdata('session_id', $my_session_id); //it won't set the session with my id.
      print_r($this->session->userdata);
      

      【讨论】:

      • 谢谢,但我正在自动加载会话库。
      • 在CI3中,获取会话ID是通过调用session_id();
      猜你喜欢
      • 1970-01-01
      • 2011-10-02
      • 1970-01-01
      • 2020-04-25
      • 2012-01-28
      • 1970-01-01
      • 2013-12-29
      • 2011-04-06
      • 2011-11-09
      相关资源
      最近更新 更多