【问题标题】:PHP Recently Viewed ProductsPHP 最近浏览的产品
【发布时间】:2017-10-04 15:45:13
【问题描述】:

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

【问题讨论】:

  • 您要显示全局或当前用户查看的最后 5 个项目吗?
  • 将由用户进行,但我们没有登录的用户,所以我猜该用户将是查看产品页面的访问者

标签: php session cookies


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

    • 谢谢!将对此进行更多研究
    【解决方案3】:

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

    1. 基于IP
    2. 最近在 Cookie 中查看的商店
    3. 会话 ID

    基于 IP

    这不是一个好主意,因为有可能两个人在使用同一个路由器,而没有看到产品的人会看到另一个人最近的视图。 (您可以使用基于 IP 的方式来展示您所在地区的其他人。等等)。

    基于 Cookies

    通过使用 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 小时轻松清理一次数据库,或者您可以将这些数据用于分析目的。

    终于 - 注册用户

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

    谢谢,

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多