Я использую 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
остается таким же до и после использования flash. Но в 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
такой же. Где идут данные сеанса и как я могу получить его сейчас?
Вы можете снова открыть сеанс с помощью session_id()
следующим образом …
session_id($original_session_id); session_start(); $this->session->set_userdata($_SESSION);