为最近查看的产品编写代码的最佳方式是什么?我使用数据库来创建动态页面,并认为我可以将 ID 号存储在会话或 cookie 中,并从数据库中提取图像和标题。虽然,我不知道这是否可行。我只希望它显示查看的最后 5 个项目而不显示任何重复项。有任何想法吗?
3 回答
如果用户已登录,您可以创建一个名为“userViews”的表,提供用户 ID 和查看的产品 ID。然后,您可以在 productID 上使用“SELECT DISTINCT”选择查询。这将选择唯一值。(检查http://www.w3schools.com/sql/sql_distinct.asp)
如果用户未登录,我建议您也这样做,但不要使用用户 ID,而是尝试从用户那里找到独特的东西。您可以尝试使用随机(唯一)数字设置 cookie 或会话并将其链接到数据库。
传统的方法是存储在 cookie 中。如果您可以加密 cookie,请这样做。
请记住,用户可以修改 cookie。#1 规则是永远不要相信用户输入。总而言之,请务必在显示之前验证信息,否则您将向攻击世界敞开大门。
将ID存储在数组中?用“,”或“。”分隔。-- 不要创建 100 个不同的 cookie 来存储 ID。
您也可以使用 SQL 来存储视图……但为什么要使用不需要的 sql 查询呢?SQL 用于长期存储。会话和 cookie 用于当前操作。
您可以通过 3 种方式显示最近查看的产品。(也许其他方式,但主要使用这三种方式)。
- 基于IP
- 存储最近在 Cookie 中查看的内容
- 会话 ID
基于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 小时清理一次数据库,或者您可以将这些数据用于分析目的。
最后 - 注册用户
如果注册用户查看您的产品,我强烈建议保存在数据库中,并在他/她每次访问您的商店时显示这些最近查看的产品。
谢谢,