1

为最近查看的产品编写代码的最佳方式是什么?我使用数据库来创建动态页面,并认为我可以将 ID 号存储在会话或 cookie 中,并从数据库中提取图像和标题。虽然,我不知道这是否可行。我只希望它显示查看的最后 5 个项目而不显示任何重复项。有任何想法吗?

4

3 回答 3

3

如果用户已登录,您可以创建一个名为“userViews”的表,提供用户 ID 和查看的产品 ID。然后,您可以在 productID 上使用“SELECT DISTINCT”选择查询。这将选择唯一值。(检查http://www.w3schools.com/sql/sql_distinct.asp

如果用户未登录,我建议您也这样做,但不要使用用户 ID,而是尝试从用户那里找到独特的东西。您可以尝试使用随机(唯一)数字设置 cookie 或会话并将其链接到数据库。

于 2012-07-13T21:21:54.937 回答
2

传统的方法是存储在 cookie 中。如果您可以加密 cookie,请这样做。

请记住,用户可以修改 cookie。#1 规则是永远不要相信用户输入。总而言之,请务必在显示之前验证信息,否则您将向攻击世界敞开大门。

将ID存储在数组中?用“,”或“。”分隔。-- 不要创建 100 个不同的 cookie 来存储 ID。

您也可以使用 SQL 来存储视图……但为什么要使用不需要的 sql 查询呢?SQL 用于长期存储。会话和 cookie 用于当前操作。

于 2012-07-13T21:25:53.353 回答
1

您可以通过 3 种方式显示最近查看的产品。(也许其他方式,但主要使用这三种方式)。

  1. 基于IP
  2. 存储最近在 Cookie 中查看的内容
  3. 会话 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 小时清理一次数据库,或者您可以将这些数据用于分析目的。

最后 - 注册用户

如果注册用户查看您的产品,我强烈建议保存在数据库中,并在他/她每次访问您的商店时显示这些最近查看的产品。

谢谢,

于 2017-10-04T07:45:13.530 回答