Доброго времени суток всем. Делаю сайт на Drupal и столкнулся с такой проблемой. Необходимо настроить систему авторизации на сайте, а также создать много форм для передачи в БД. 2 дня мучался уже... При работе под моей учетной записью админа все работает. Прошу друга попробовать из дома - не работает. Суть задачи такова: после регистрации пользователь может войти на сайт, добавлять коментарии к работам, оценивать их и т.д. Как это реализовать через mysql и php я знаю. После авторизации я сохраняю в переменной сессии логин пользователя и пишу в базу session_id() его, а затем на остальных страницах сверяется в базе логин и ид сессии. Проблема в том, что у неавторизованных (основной регистрацией системы) пользователей при переходена другие страницы значение сессий сбрасывается. Это происходит, возможно, потому, что для гостей не включена работа сессий. Как решить эту проблему? В основной регистрации CMS их быть не должно. Наверное просто нужно session_start() где-то прописать? Только вот я не знаю где. Или в настройках чего изменить? Помогите пожалуйста люди добрые!
Комментарии
Все регистрации и авторизации написаны собственноручно. Под любой учеткой (основной регистрации CMS) все работает идеально. А нужно, чтобы без нее работало
Проверьте в базе в таблице users есть ли запись с uid=0, если нет, то добавьте ее. Иначе под анонимом невозможно вытащить данные сессии из базы.
Есть такая запись. В таблице у нее 0 и NULL везде
для неавторизованных пользователей друпал6 стартует сессию сам, у меня все сохраняется в сессиях. Еще вариант может быть, что у вас кеширование включено, проверьте на странице производительности. Тогда, если вы прямо на страницу скрипты подгружаете с переменными, которые тянете из сессии, то не выйдет так, ибо друпал кеширует всю страницу целиком и для всех анонимов она тянется из кеша одинаковая.
Был проведен следственный эксперимент...
<?php
echo session_id();
?>
Для всех выводилось одно и то же. Действительно кеш тянулся одинаковый. Отключил в настройках и все работает так как надо. Игорь, спасибо большое! Проблема решена.
А я хотел все равно работать со включенным кешем, так как восновном пользователи были анонимы и хотелось большей производительности и меньшей нагрузки, поэтому перенес все динамические переменные в кукисы из тела страницы, благо их было немного. И теперь работает со включенным кешем, правда только для тех, у кого включены кукисы, но ведь если они выключены, то и сессии в друпале не работают.
Ну у меня небольшой проект с посещаемость до 10 человек в сутки Пока такие вопросы как производительность и нагрузка не сильно беспокоят. В дальнейшем возможно уделю этому внимание, но сейчас горят сроки и нужно другим заниматься. Еще раз огромное спасибо.
2 gorr
спасибо, добрый человек!
полчаса билась и не могла понять, почему нормально работающий сайт после переноса на другой сервер перестал писать сессию для гостя. оказалось, при создании дампа базы дампер поменял uid = 0 на uid = следующая_незанятая_цифра и гость из базы как бы исчез. ваша подсказка помогла это обнаружить.
Да не за что. Только это не дампер поменял, в дамп загляните, -(если он в обычном текстовом формате конечно)там все в порядке, просто при импорте дампа в базу uid=0 недопустим у автоинкрементых полей, коим и является это поле (при дефолтных настройках MySql).