Drupal использует специальный обработчик сеанса, который меняет знакомые …:
$_SESSION['foo'] = 'bar';
echo $_SESSION['foo'];
…поведение. Вышеупомянутая переменная сеанса «foo» не будет сохраняться со страницы на страницу.
Многие комментарии и записи в форуме на Drupal.com поднимают вопрос о том, что Drupal использует собственный обработчик сеанса для повышения производительности и поддержки кластеризации серверов. Тем не менее, я не могу найти конкретные примеры, отвечающие на вопрос: «Нужно управлять своими переменными сеанса на разных страницах Drupal и не хотеть прибегать к куки? Вот как вы это делаете …»
У кого-нибудь есть опыт? Мое использование НЕ будет на внешних страницах Drupal, но в самих страницах шаблонов. Это для анонимного пользователя, а не для входа в систему. В этом случае поведение $ _SESSION ожидается.
Итак, вот ответ – $ _SESSION работает как для аутентифицированных пользователей, так и для анонимных пользователей, как и ожидалось, – если нет других проблем!
Я обнаружил, что у меня была следующая проблема; моя таблица «пользователей» Drupal (или в моем случае «drupal_users») отсутствовала у пользователя с UID нуля («0»).
Drupal использует UID 0 для управления сеансами в базе данных через свой собственный обработчик сеанса. Если этот пользователь не существует в таблице (он должен быть установлен по умолчанию), тогда Drupal не может прикреплять информацию о сеансе к анонимному пользователю.