会话数据正在失去Flash

时间:2011-07-13 09:23:45

标签: php flash session codeigniter uploadify

我正在使用带有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是相同的。会话数据在哪里,我现在如何检索它?

1 个答案:

答案 0 :(得分:1)

您可以使用session_id()重新开启会话,如下所示......

session_id($original_session_id);
session_start();

$this->session->set_userdata($_SESSION);