Русскоязычный форум, посвященный фреймворку Kohana http://forum.kohanaframework.su/ |
|
Хранение сессий в БД http://forum.kohanaframework.su/viewtopic.php?f=33&t=563 |
Страница 1 из 1 |
Автор: | vova [ 25 янв 2013, 03:44 ] |
Заголовок сообщения: | Хранение сессий в БД |
Здравствуйте! Я изучаю Кохану и мне нужно хранить сессии в БД, инет магазин не захотел делать, решил соц сеть, чтоб посложнее было Соответственно мне нужно создавать сессию и передавать в неё как минимум id пользователя, только когда он авторизовался, но почему то записи в БД появляются просто при обновлении любой страницы когда пользователь даже не авторизован, и при авторизации не могу установить id_user в сессию, выдаёт ошибку - код снизу. base.php - от него наследуются index и admin; от index - наследуются контроллеры авторизованых пользователей и не авторизованых; admin - контроллеры по управлению сайтом, то есть доступ типа только для меня base.php Код:
auth.php action login Код:
account.php Код:
если $this->session = Session::instance(); я перенесу в action login то в этом случае id_user добавляется в сессию, но сессия всё равно в БД добавляется, и по уроках он был в базовом классе. Гуру Коханы - помогите плиз советом что я не так делаю, прост плохо понимаю когда их правильно создавать и т д...( весь инет уже облазил, практически никто не использует сессии в БД |
Автор: | vova [ 25 янв 2013, 04:25 ] |
Заголовок сообщения: | Re: Хранение сессий в БД |
только что вот как сделал: base.php Код:
auth.php action login здесь в сессию ничег оне заносится account.php а на странице акаунта создаю экземпляр, заношу user_id и вывожу, но в контроллере settings.php не получается получить из сессии текущего юзера Код:
и ещё хотел спросить - "$this->user = $this->auth->get_user();" - где хранятся эти данные? я чёто вообще запутался с этими сессиями и с Auth... мож кто знает хорошую статью или видео, где рассказывается как работать с сессиями в БД и с модулём Auth вместе... |
Автор: | Zorato [ 27 янв 2013, 02:33 ] |
Заголовок сообщения: | Re: Хранение сессий в БД |
Статья по модулю auth: http://kohana3.ru/module/auth Что касается сессий, то в свое время тоже искал статью чтобы разобраться, но потом осознал, что разобраться в 5 методах можно и без статьи, поэтому особой необходимости в ней просто нет. П.С. если все же будут какие-то трудности или вопросы - пишите, разберемся. |
Автор: | Sergey [ 28 янв 2013, 01:50 ] |
Заголовок сообщения: | Re: Хранение сессий в БД |
мне последнее время очень любопытно работать с MongoDB. кто нибудь замерял, в чём быстрее писать/читать сессии — SQL или BSON? |
Автор: | vova [ 11 фев 2013, 04:20 ] |
Заголовок сообщения: | Re: Хранение сессий в БД |
Zorato писал(а): Статья по модулю auth: http://kohana3.ru/module/auth Что касается сессий, то в свое время тоже искал статью чтобы разобраться, но потом осознал, что разобраться в 5 методах можно и без статьи, поэтому особой необходимости в ней просто нет. П.С. если все же будут какие-то трудности или вопросы - пишите, разберемся. согалсен, но просто нету ни одной статья по работе с базой данных... не хочется начинать с быдло-кода, а самому тяжело понять какой принцып и как правильно работать с сессиями если хранить их в БД... если не в напряг - напиши плиз кратенько когда нужно создавать сессию, когда заносить в неё данные и как лучше всего(и быстрее) получать данные с сессий котоыре находятся в БД. Спасибо большое! |
Автор: | Zorato [ 12 фев 2013, 03:16 ] |
Заголовок сообщения: | Re: Хранение сессий в БД |
Касательно работы с бд: http://kohana3.ru/module/database http://kohana3.ru/module/orm + статьи на этом сайте + блог http://brotkin.ru/ Теперь о сессиях. Когда использовать сессию? Когда тебе нужно временно хранить какие-то данные пользователя - выбранные настройки, язык, валюту, введенное имя и т.п. Что касается открытия сессии - фреймворк все сделает за тебя, тебе достаточно просто использовать методы get, set и delete (если надо). Код:
Единственное требование - код должен выполниться до вывода html, т.е. в контроллере или в крайнем случае в модели, но никак не в виде. Как хранить сессии? В принципе, в 99% случаев хватает стандартного механизма php, т.е. хранить в БД не требуется, производительности и быстродействия хватает и так. Поэтому и заморачиваться с БД не вижу смысла, но если очень хочется, то http://kohanaframework.org/3.3/guide/ko ... se-adapter . |
Автор: | Sergey [ 12 фев 2013, 18:37 ] |
Заголовок сообщения: | Re: Хранение сессий в БД |
Zorato писал(а): В принципе, в 99% случаев хватает стандартного механизма php, т.е. хранить в БД не требуется, производительности и быстродействия хватает и так. В принципе, не хватает стандартного механизма. И это сегодня 99%, завтра их может стать 66% И вообще, то, что сегодня подавляющее большинство пользуется одним способом, не говорит мне о том, что я не должен владеть другим способом или не должен понимать принципиальные отличия одного от другого. А хранить в БД сессии или нет, требуется оно или нет, диктует конкретное решение конкретной задачи. Насчёт производительности я бы с вами поспорил, жаль вы не знаете что такое производительность MongoDB - спорить не о чем. Отсутствие предопределенной схемы несет с собой некоторые преимущества. Во-первых, структуру данных определяет код приложения, а не база. Это позволяет ускорить разработку на ранних этапах, когда схема часто изменяется. Во-вторых, и это куда важнее, безсхемная модель позволяет представить данные с переменным набором свойств. У меня написан не один модуль для Gleez CMS использующий MongoDB, но я до сих пор не проводил тесты. Хотя на официальном сайте говорится что MongoDB быстрее MySQL |
Автор: | vova [ 17 фев 2013, 04:25 ] |
Заголовок сообщения: | Re: Хранение сессий в БД |
Zorato, у меня основная пробелма в том что я при запуске стартовой страницы определяю - Auth::instance() в любом случае, авторизорван пользователь или нет, чтоб когда человек заходит на главную страницу то сразу проверялось - авторизован он или нет и соответственно показывается страница для авторизации или же редирект если авторизован, и в меня в БД всегда создаётся сессия, даже когда не авторизованый пользователь заходит чтоб авторизватся, а это мне совсем не нужно, так как лишняя запись в бд а так же сессия... надеюсь поймёшь о чём я... З.Ы. мож кто уже реализовывал работу с сессиями в БД, когда создаётся сессия только для авторизованого пользователя - то напишите плиз по какому принцыпу устроена у вас структура |
Автор: | Sergey [ 17 фев 2013, 13:39 ] |
Заголовок сообщения: | Re: Хранение сессий в БД |
структура чего вас интересует? |
Автор: | vova [ 18 фев 2013, 06:25 ] |
Заголовок сообщения: | Re: Хранение сессий в БД |
всё, уже сам розжевал этот модуль до мелочей)) Только мой старый вопрос остаётся открытым - почему Кохана может мне создавать сессию просто так при заходе на сайт, то есть: зашли на сайт и создалась почему то сессия, если авторизовался то создаётся новая что само собой должно быть, и после logout эта сессия дял пользователя удаляет, но для неавторизованого создаётся опять новая не понятно почему... мож кто подскажет в чём я туплю?) методом тыка нашёл ответ - обычная проверка if(Auth::instance()->logged_in()) создаёт сессию, и именно она 100% создаёт, фантастика... |
Страница 1 из 1 | Часовой пояс: UTC + 4 часа [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |