Zend_Session_Namespace от не-Zend PHP

Мне нужно интегрировать мой неструктурированный код с моим новым приложением Zend. Но они должны поделиться сессией. Проблема, с которой я сталкиваюсь, - когда я устанавливаю переменные сеанса из не-Zend PHP, используя

$_SESSION['MyApp']['user']=$user;

Я не могу получить доступ к сессии из приложения Zend, я попробовал оба -

print_r($_SESSION['MyApp']['user']);

а также

$myAppSession = new Zend_Session_Namespace('MyApp');
print_r($myAppSession->user);

Не работает Информация - у меня есть

resources.session.name = "MyApp"

в моем загрузочном INI-файле.

3 ответа

Решение

Я нашел выход, у Zend Session другой идентификатор сессии, чем у обычных PHP-сессий, поэтому я отправил идентификатор сессии из zend вместе с запросом и начал сессию с этим идентификатором сессии.

    if(isset($_REQUEST['sess_id'])) {
        $sess_id = $_REQUEST['sess_id'];
    }

    session_id($sess_id);
    session_start();

Это не красивый код, но он работает.

Вы путаете имя сеанса с пространствами имен сеанса ZF.

Имя сеанса относится к значению, хранящемуся в файле cookie сеанса, и не влияет на фактическое содержимое $_SESSION,

Чтобы ваши приложения могли совместно использовать сеанс, им обоим нужно задать одно и то же имя, используя session_name() или session.name директива php.ini

Zend_Session_Namespace - это просто оболочка для $_SESSION, так что это должно быть просто. Когда вы говорите, что это не работает, массив $_SESSION пуст? Если это так, убедитесь, что вы создаете сеансы одинаковым образом (т. Е. Используете одно и то же хранилище сеансов, имя файла cookie и т. Д.).

Другие вопросы по тегам