Zend_Session_Namespace от не-Zend PHP - PullRequest
0 голосов
/ 13 мая 2011

Мне нужно интегрировать мой неструктурированный код с моим новым приложением 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 ]

0 голосов
/ 13 мая 2011

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

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

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

0 голосов
/ 04 июля 2011

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

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

    session_id($sess_id);
    session_start();

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

0 голосов
/ 13 мая 2011

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

...