2012-07-13 76 views
1

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

+1

要显示全球最近5项或当前用户查看的项目吗? – 2012-07-13 21:15:48

+0

将由用户,但我们没有用户登录,所以我想用户将成为浏览产品的页面的访问者 – 2012-07-13 21:52:44

回答

1

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

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

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

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

+0

谢谢!将更多地考虑这一点 – 2012-07-13 21:55:10

3

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

如果用户没有登录,我建议你做同样的事情,但不要使用userID,尝试从用户中找到一些独特的东西。您可以尝试使用随机(唯一)号码设置Cookie或会话并将其链接到数据库。

+0

真实的,好的指针 - 将更多地看到! – 2012-07-13 21:53:23

0

有3种方法可以显示最近查看过的产品。 (也许有其他一些方法,但是这3个主要用于)。

  1. 基于IP
  2. 店不久前在饼干看
  3. 会话ID

基于IP

这不是一个好主意,那是因为有机会两个人使用相同的路由器,并且没有看到该产品的人会看到另一个人最近的视图。 (你可以使用IP来显示你所在地区的其他人等)。基于

上的Cookie

利用Cookie你100%确保您为展示最新产品,以谁在访问您的网站的人,但并不是所有的用户/观众已经启用了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小时轻松清理一次数据库,或者您可以将此数据用于分析目的。

最后 - 注册用户

如果寄存器用户查看您的产品我建议高在保存数据库,他每次都显示最近这些视图产品/她访问您的商店。

谢谢,

相关问题