为最近浏览过的产品编写代码的最佳方法是什么?我使用数据库来创建动态页面,并认为我可以将ID号存储在会话或cookie中,并从数据库中提取图像和标题。虽然,我不知道这是否有效。我只希望它显示最后查看的5个项目,而不显示任何重复项目。任何想法?
答案 0 :(得分:3)
如果用户已登录,您可以创建一个名为“userViews”的表,提供userID和查看的productID。 然后,您可以使用productID上的“SELECT DISTINCT”选择查询。这将选择唯一值。 (检查http://www.w3schools.com/sql/sql_distinct.asp)
如果用户未登录,我建议你这样做,但不要使用userID,而是尝试从用户那里找到一些独特的东西。您可以尝试使用随机(唯一)编号设置cookie或会话,并将其链接到数据库。
答案 1 :(得分:2)
传统方式是存储在cookie中。如果您可以加密cookie,请执行此操作。
请记住,用户可以修改cookie。 #1规则永远不会信任用户输入。总而言之,请确保在显示之前验证信息,否则您将打开自己的攻击世界。
将ID存储在数组中?分别用','或'。'分隔 - 不要创建100个不同的cookie来存储ID。
您还可以使用SQL来存储视图......但为什么要使用不需要的SQL查询? SQL用于长期存储。会话和cookie适用于当前的操作。
答案 2 :(得分:0)
您可以通过3种方式展示最近浏览过的产品。 (也许还有其他一些方法,但这三种方式最常用)。
基于IP
这不是一个好主意,因为有两个人使用相同的路由器,而没有看到该产品的人会看到另一个人最近的观点。 (您可以使用基于IP来向您所在地区展示其他人等。)。
基于Cookie
通过使用Cookie,您可以100%确定您向访问您网站的人显示最新产品,但并非所有用户/访问者都启用了Cookie,如果您没有加密,Cookie也可以轻松编辑并带来安全风险正常。
会话ID
您可以为访问者生成随机user_id
,并将此信息存储在数据库中,如下所示:
start_session();
if(!$_SESSION['user_id']){
$_SESSION['user_id'] = rand(1, 1000000);
mysql_query('INSERT INTO products_recent (user_id) VALUES ('.$_SESSION['userid'].')');
}
此外,您可以选择/更新用户产品视图并显示给该用户。
如果需要,您可以每24小时轻松清理数据库,或者您可以将此数据用于分析目的。
最后 - 注册用户
如果注册用户查看您的产品,我强烈建议您保存在数据库中,并在每次访问您的商店时显示这些最近的查看产品。
谢谢,