Как хранить и извлекать пользовательские переменные сеанса в Drupal 6? - PullRequest
12 голосов
/ 10 июля 2009

Drupal использует пользовательский обработчик сеанса, который изменяет привычный ...:

$_SESSION['foo'] = 'bar';<br> echo $_SESSION['foo'];

... поведение. Приведенная выше переменная сеанса "foo" не будет сохраняться от страницы к странице.

Многие комментарии и записи на форуме на Drupal.com поднимают проблему, заключающуюся в том, что Drupal использует собственный обработчик сеансов из соображений производительности и поддержки кластеризации серверов. Однако я не могу найти конкретные примеры, отвечающие на вопрос: «Вам нужно управлять своими собственными переменными сеанса на страницах в Drupal и не использовать файлы cookie? Вот как вы это делаете ...»

У кого-нибудь есть опыт с этим? Я использую НЕ на внешних страницах Drupal, а на самих шаблонных страницах. Это для анонимного пользователя, а не для входа в систему. В этом случае поведение $ _SESSION соответствует ожиданиям.

1 Ответ

17 голосов
/ 10 июля 2009

Хорошо, вот ответ - $ _SESSION работает как для аутентифицированных, так и для анонимных пользователей, как и ожидалось - , если нет других проблем!

Я обнаружил, что у меня была следующая проблема; В моей таблице пользователей «Drupal» (или в моем случае «drupal_users») отсутствовал пользователь с UID, равным нулю («0»).

Drupal использует UID 0 для управления сеансами в базе данных через его собственный обработчик сеансов. Если этого пользователя нет в таблице (он должен быть там при установке по умолчанию), то Drupal не может прикрепить информацию о сеансе к анонимному пользователю.

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