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 и т. Д.).