PHP最近浏览的产品

时间:2012-07-13 21:13:36

标签: php session cookies

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

3 个答案:

答案 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种方式展示最近浏览过的产品。 (也许还有其他一些方法,但这三种方式最常用)。

  1. 基于IP
  2. 最近在Cookie中查看商店
  3. 会话ID
  4. 基于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小时轻松清理数据库,或者您可以将此数据用于分析目的。

    最后 - 注册用户

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

    谢谢,