Недавно просмотренные страницы

Всем привет,

Есть задача: отображать в специальной колонке страницы (определенного типа), которые просмотрел сам пользователь. Т.е. самому пользователю показать то, что он просматривал.

Подскажите, пожалуйста, как лучше подобное реализовать?

Очевидно, что где-то сохранять страницы посещенные пользователем. В сессии или БД.

Правильно будет реализовать это в виде виджета.

Запоминать посещенные страницы нужно в экшенах контроллеров, сохраняя текущий URL в базу данных. А уж как сохранять/извлекать - решать вам. Например, можно использовать ActiveRecord.

Спасибо! А как лучше идентифицировать анонимного пользователя? (им тоже надо показывать их посещенные страницы)

Анонимам нужно сохранять ссылки в cookie. Ну или вообще всем :) Полагаться на IP смысла нет.

Только лучше не в куки сохранять, а в сессию.

Разве это не зависит от задачи? Сессия хранится на сервере в течение одного сеанса, а куки можно сохранить на стороне пользователя, скажем, в течение недели или больше (если он конечно сам их не удалит).

Куки ограничены максимальным размером. Например MSDN указывает на объем 4 Кб.

http://msdn.microsoft.com/ru-ru/library/ms178194.aspx

Конечно, это может и хватить для хранения "истории" посещений, но по мне - это некрасивое решение.

В куках надо хранить идентификатор сессии, а все данные прикрепленные к пользователю хранить в самой сессии.

А уж сами сессии можно хранить где угодно, хоть в базе.

Поэтому это утверждение:

не соответствует действительности.

В связи с вашим сообщением вспомнил о существовании уже готового класса для хранения сессий в бд: http://www.yiiframework.com/doc/api/CDbHttpSession :)

Сам не использовал, но автору топика можно его рассмотреть как вариант решения задачи…

Большое спасибо всем за оперативные ответы!