我正在使用带有CodeIgniter的Flash上传器(uploadify,swfupload),想要获取会话数据。我发现闪存不会发送会话数据,所以我设置了$config['sess_match_useragent'] = FALSE;
现在我已经在会话中设置了会话值myname
,我可以使用 Internet Explorer 在我的后端PHP脚本上获取它。 :
Array
(
[session_id] => f4l82aa3f82rd4b2ed682e0e132d7a72
[ip_address] => 127.0.0.1
[user_agent] => Shockwave Flash
[last_activity] => 1310546544
[myname] => test
)
但问题是它在 Internet Explorer 上运行良好 ONLY 。在Internet Explorer上,session_id
在使用闪存之前和之后保持不变。
但是在Firefox和所有其他浏览器上,session_id
已更改,我只能获得session_id,ip_address,user_agent,last_activity 但而不是myname
。
Array
(
[session_id] => c2cafff6daadc5148e6646s8c4c2aafa
[ip_address] => 127.0.0.1
[user_agent] => Shockwave Flash
[last_activity] => 1310548338
)
通过在SO上浏览并询问之前的问题,我发现由于Flash删除了会话数据,我应该将当前的会话ID发送到后端脚本,然后使用该会话ID恢复会话。所以我使用原始会话ID设置session_id。
$original_session_id = $_REQUEST['session_id'];
$newdata = array(
'session_id' => $original_session_id,
);
$this->session->set_userdata($newdata);
现在我可以看到会话ID已成功设置且与之前相同,但问题是我仍然无法获取其他会话数据,例如myname
。为什么会这样?我不应该得到它,因为现在我的session_id
是相同的。会话数据在哪里,我现在如何检索它?
答案 0 :(得分:1)
您可以使用session_id()
重新开启会话,如下所示......
session_id($original_session_id);
session_start();
$this->session->set_userdata($_SESSION);