Вы можете использовать базу данных или куки. Этот метод базы данных будет сохраняться даже после того, как пользователи очистят свои куки браузера:
Создайте таблицу в вашей базе данных примерно так:
userid,
productid,
viewdate TIMESTAMP DEFAULT CURRENT_TIMESTAMP
Всякий раз, когда посетитель просматривает продукт, вы просто вставляете в базу данных строку, идентифицирующую пользователя, продукт и отметку времени его посещения.
-- Insert
INSERT INTO recentlyviewed (userid, productid) VALUES (userid, productid);
В следующий раз, когда пользователь загружает страницу, вы получаете самые последние n просмотренных продуктов и отображаете их. Периодически вы можете запускать запланированное задание, чтобы очистить записи просмотра старше, чем количество дней, которое вы выбрали для их истечения.
-- Cleanup old records after 14 days
DELETE FROM recentlyviewed WHERE viewdate < DATE_ADD(NOW(), INTERVAL -14 DAY);