在CodeIgniter中设置Session_id

时间:2011-07-11 20:59:42

标签: php session codeigniter

在标准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;

4 个答案:

答案 0 :(得分:6)

你不应该这样做,codeigniter会为你做这一切。

如果您希望获得会话ID,可以致电:

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

但是你可以解决它:(注意这篇文章是3岁,我不确定它是否仍然是必要的)

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

答案 1 :(得分:0)

使用它在codeigniter中设置session_id:

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

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

再次阅读。

答案 2 :(得分:0)

这是我刚刚在另一个question上建议的黑客攻击。将其放在__construct的{​​{1}}中(未经测试,不适用于加密)

MY_Session

答案 3 :(得分:0)

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

我相信启动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);