Как получить значение из сеанса PHP по умолчанию, когда используется пользовательский обработчик сеанса? - PullRequest
1 голос
/ 04 февраля 2010

У меня есть страница, отличная от CMS, в которой значение сеанса хранится с использованием обработчика сеанса PHP по умолчанию.т.е.:

session_start();
$_SESSION['MyVar'] = true;

На другой странице, которая является частью CMS, мне нужно проверить, является ли переменная истинной или нет.Но CMS использует свой собственный обработчик сеанса, поэтому, когда я пытаюсь прочитать переменную, он не определен, потому что ищет его в системе хранения сеансов CMS, а не в PHP по умолчанию.мгновение и прочитайте значение из хранилища сеансов по умолчанию, а затем восстановите CMS, чтобы он функционировал правильно?

1 Ответ

0 голосов
/ 04 февраля 2010

В какой-то момент вам нужно будет вызвать session_start(), чтобы заполнить суперглобальный массив $_SESSION. Возможно, вы сможете вызвать session_write_close(), изменить обработчик и снова выполнить session_start().

Попробуйте, это будет выглядеть примерно так:

$Sessionhandler = session_get_current_handler();
session_use_default();
session_start();
$value = $_SESSION['var'];
session_write_close();
session_set_handler($Sessionhandler);
session_start();

Я почти сомневаюсь, что это сработает. Единственная причина, по которой он «может» работать, заключается в том, что session_write_close(), поскольку PHP обычно выдает E_NOTICE, если вы пытаетесь вызвать session_start() дважды

В зависимости от реализации, он может попытаться получить данные снова. Но многие люди в комментариях к документации видели странные вещи, возникающие при вызове session_start() дважды, даже после session_write_close()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...