Вопрос

Я пытаюсь реализовать загрузчик Flash в своем приложении платформы Zend, но у меня возникают проблемы с сеансом.

Flash не отправляет заголовки файлов cookie, поэтому сеанс теряется.Я пытаюсь отправить sessionId в качестве параметра публикации, и в своем загрузочном файле я добавил session_id($_POST['session_id]), но, похоже, это работает.

Я использую таблицу MySQL в качестве хранилища сеансов.

Я попытался отладить ошибку, и, насколько я вижу, session_id установлен, и хранилище возвращает правильные данные из базы данных, но, похоже, в глобальном $_SESSION он установлен неправильно.

И что еще более странно, похоже, что он работает на моем компьютере с Windows, но не на промежуточном сервере Linux.

Это было полезно?

Решение

Знаете ли вы, используете ли вы Suhosin при установке PHP?

Я слышал мало отчетов если Сухосин делает это с сеансами, решение в этом случае — отключить suhosin.session.cryptua в php.ini.

В любом случае, если это не ваша проблема, просто чтобы быть уверенным в основах:

  1. Обязательно передайте свой session_id() в посте из вашего Flash, например, с Загрузка SWF-файла, это делается путем передачи его в post_params значение массива конфигурации.
  2. Обязательно позвони session_id($_POST['session_id]) до session_start()

Но в любом случае, если вы утверждаете, что он работает в вашей среде Windows, это, вероятно, связано с вашей установкой PHP.

Другие советы

Это похоже на различные ошибки, о которых сообщалось на протяжении многих лет, хотя в большинстве случаев это работало в Linux, а не в Windows.

http://framework.zend.com/issues/browse/ZF-2459 https://www.zend.com/en/forums/index.php?t=msg&goto=16104&S=de7d9b854db445eb37d0f33470cac6b0

и совсем недавно, в прошлом месяце:

http://blog.rac.me.uk/2009/01/09/php-zend-session-dont-set-it-up-in-the-initalizer/

-- МаркусКью

Попробуйте следующее в действии контроллера:

session_write_close();
session_id($this->_getParam('PHPSESSID'));
session_start(); 
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top