Данные сессии теряются с Flash - PullRequest
2 голосов
/ 13 июля 2011

Я использую Flash Uploader (uploadify, swfupload) с CodeIgniter, хочу получить данные сеанса.Я обнаружил, что флэш-память не отправляет данные сеанса, поэтому я установил $config['sess_match_useragent'] = FALSE;

Теперь, например, я установил значение сеанса myname в сеансе, и я могу получить его на своем PHP-скрипте бэкэндаиспользуя Internet Explorer .:

Array
(
    [session_id] => f4l82aa3f82rd4b2ed682e0e132d7a72
    [ip_address] => 127.0.0.1
    [user_agent] => Shockwave Flash
    [last_activity] => 1310546544
    [myname] => test
)

Но проблема в том, что он работает нормально ТОЛЬКО в Internet Explorer .В 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 удаляет данные сеанса, я должен отправить текущий идентификатор сеанса бэкэнд-сценарию, а затем восстановить сеанс, используя этот сеанс.Я БЫ.Таким образом, я устанавливаю session_id с использованием исходного идентификатора сеанса.

$original_session_id = $_REQUEST['session_id'];
$newdata = array(
            'session_id'  => $original_session_id,                   
               );
    $this->session->set_userdata($newdata);

Теперь я вижу, что идентификатор сеанса установлен успешно и он такой же, как предыдущий, но проблема в том, что я все еще не могу получить другойданные сеанса, такие как myname.Почему это так?Разве я не должен получить это, потому что теперь мой session_id такой же.Куда поступают данные сеанса и как я могу получить их сейчас?

1 Ответ

1 голос
/ 13 июля 2011

Вы можете снова открыть сеанс, используя session_id() следующим образом ...

session_id($original_session_id);
session_start();

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