Как включить поддержку сессий для гостей?

Главные вкладки

Аватар пользователя comtechbal comtechbal 12 ноября 2009 в 14:10

Доброго времени суток всем. Делаю сайт на Drupal и столкнулся с такой проблемой. Необходимо настроить систему авторизации на сайте, а также создать много форм для передачи в БД. 2 дня мучался уже... При работе под моей учетной записью админа все работает. Прошу друга попробовать из дома - не работает. Суть задачи такова: после регистрации пользователь может войти на сайт, добавлять коментарии к работам, оценивать их и т.д. Как это реализовать через mysql и php я знаю. После авторизации я сохраняю в переменной сессии логин пользователя и пишу в базу session_id() его, а затем на остальных страницах сверяется в базе логин и ид сессии. Проблема в том, что у неавторизованных (основной регистрацией системы) пользователей при переходена другие страницы значение сессий сбрасывается. Это происходит, возможно, потому, что для гостей не включена работа сессий. Как решить эту проблему? В основной регистрации CMS их быть не должно. Наверное просто нужно session_start() где-то прописать? Только вот я не знаю где. Или в настройках чего изменить? Помогите пожалуйста люди добрые!

Комментарии

Аватар пользователя comtechbal comtechbal 12 ноября 2009 в 14:13

Все регистрации и авторизации написаны собственноручно. Под любой учеткой (основной регистрации CMS) все работает идеально. А нужно, чтобы без нее работало Smile

Аватар пользователя gorr gorr 12 ноября 2009 в 14:55

Проверьте в базе в таблице users есть ли запись с uid=0, если нет, то добавьте ее. Иначе под анонимом невозможно вытащить данные сессии из базы.

Аватар пользователя gorr gorr 12 ноября 2009 в 15:33

для неавторизованных пользователей друпал6 стартует сессию сам, у меня все сохраняется в сессиях. Еще вариант может быть, что у вас кеширование включено, проверьте на странице производительности. Тогда, если вы прямо на страницу скрипты подгружаете с переменными, которые тянете из сессии, то не выйдет так, ибо друпал кеширует всю страницу целиком и для всех анонимов она тянется из кеша одинаковая.

Аватар пользователя comtechbal comtechbal 12 ноября 2009 в 16:04

Был проведен следственный эксперимент...

<?php
echo session_id();
?>

Для всех выводилось одно и то же. Действительно кеш тянулся одинаковый. Отключил в настройках и все работает так как надо. Игорь, спасибо большое! Проблема решена.

Аватар пользователя gorr gorr 12 ноября 2009 в 17:02

А я хотел все равно работать со включенным кешем, так как восновном пользователи были анонимы и хотелось большей производительности и меньшей нагрузки, поэтому перенес все динамические переменные в кукисы из тела страницы, благо их было немного. И теперь работает со включенным кешем, правда только для тех, у кого включены кукисы, но ведь если они выключены, то и сессии в друпале не работают.

Аватар пользователя comtechbal comtechbal 13 ноября 2009 в 0:15

Ну у меня небольшой проект с посещаемость до 10 человек в сутки Smile Пока такие вопросы как производительность и нагрузка не сильно беспокоят. В дальнейшем возможно уделю этому внимание, но сейчас горят сроки и нужно другим заниматься. Еще раз огромное спасибо.

Аватар пользователя kinosura@drupal.org kinosura@drupal.org 28 апреля 2010 в 19:58

2 gorr
спасибо, добрый человек!
полчаса билась и не могла понять, почему нормально работающий сайт после переноса на другой сервер перестал писать сессию для гостя. оказалось, при создании дампа базы дампер поменял uid = 0 на uid = следующая_незанятая_цифра и гость из базы как бы исчез. ваша подсказка помогла это обнаружить.

Аватар пользователя gorr gorr 29 апреля 2010 в 8:59

Да не за что. Только это не дампер поменял, в дамп загляните, -(если он в обычном текстовом формате конечно)там все в порядке, просто при импорте дампа в базу uid=0 недопустим у автоинкрементых полей, коим и является это поле (при дефолтных настройках MySql).