Всем привет,
Есть задача: отображать в специальной колонке страницы (определенного типа), которые просмотрел сам пользователь. Т.е. самому пользователю показать то, что он просматривал.
Подскажите, пожалуйста, как лучше подобное реализовать?
Всем привет,
Есть задача: отображать в специальной колонке страницы (определенного типа), которые просмотрел сам пользователь. Т.е. самому пользователю показать то, что он просматривал.
Подскажите, пожалуйста, как лучше подобное реализовать?
Очевидно, что где-то сохранять страницы посещенные пользователем. В сессии или БД.
Правильно будет реализовать это в виде виджета.
Запоминать посещенные страницы нужно в экшенах контроллеров, сохраняя текущий URL в базу данных. А уж как сохранять/извлекать - решать вам. Например, можно использовать ActiveRecord.
Спасибо! А как лучше идентифицировать анонимного пользователя? (им тоже надо показывать их посещенные страницы)
Анонимам нужно сохранять ссылки в cookie. Ну или вообще всем Полагаться на IP смысла нет.
Только лучше не в куки сохранять, а в сессию.
Разве это не зависит от задачи? Сессия хранится на сервере в течение одного сеанса, а куки можно сохранить на стороне пользователя, скажем, в течение недели или больше (если он конечно сам их не удалит).
Куки ограничены максимальным размером. Например MSDN указывает на объем 4 Кб.
http://msdn.microsoft.com/ru-ru/library/ms178194.aspx
Конечно, это может и хватить для хранения "истории" посещений, но по мне - это некрасивое решение.
В куках надо хранить идентификатор сессии, а все данные прикрепленные к пользователю хранить в самой сессии.
А уж сами сессии можно хранить где угодно, хоть в базе.
Поэтому это утверждение:
не соответствует действительности.
В связи с вашим сообщением вспомнил о существовании уже готового класса для хранения сессий в бд: http://www.yiiframework.com/doc/api/CDbHttpSession
Сам не использовал, но автору топика можно его рассмотреть как вариант решения задачи…
Большое спасибо всем за оперативные ответы!