【发布时间】:2012-05-03 04:52:33
【问题描述】:
我的页面 URL 包含 3 个变量:id=N、num=N 和 item=N; N = 1, 100。它们是整数和 URL 的示例:
page.php?id=1&num=24&item=12
我想计算没有重复的访问。我认为它应该如何工作:
如果 cookie 存在,则不要向数据库添加新值,否则设置 cookie 并在数据库中递增值。
我使用了一个 $_COOKIE[''] 数组来识别页面是否被访问:
$_COOKIE['product[id]'] = $_GET['id'];
$_COOKIE['product[num]'] = $_GET['num'];
$_COOKIE['product[item]'] = $_GET['item'];
路径不同时出现问题:
page.php?id=1&num=24&item=12&page=0#topView
我无法在一个人每次访问该页面时查询数据库,这是因为有 1000 多个唯一访问。
我的问题是:我如何计算每个页面访问的 mod 唯一性?
注意:
page.php?id=1&num=24&item=12
或
page.php?id=1&num=24&item=15
或
page.php?id=2&num=24&item=12
这些链接为我提供了独特的产品信息,具体取决于变量。
谢谢!
【问题讨论】:
-
你有没有想过如果我进入你的页面并输入 page.php?id=2&num=10000000&item=12 会发生什么? :)
-
是的,在任何查询或任何执行之前,我添加了一个过滤器块以防止任何攻击或数据损坏。
-
哦,我误解了数字的含义。 “我无法每次有人访问该页面时都查询数据库,这是因为有 1000 次以上的唯一访问。” - 我怀疑你可以。在我看来 - 你应该。计算所有页面访问次数,当您想要获取最终结果时,按 ip、id、num、item 进行分组。将所有数据放入数据库还可以让您简要了解最受欢迎的页面。更进一步,您将能够查看一个唯一用户更多次访问哪些页面并找出原因。数据越多越好。它不会占用您的数据库太多。
-
因为每个变量都不同,我通过获取 IP 地址为每个访问者创建了一个唯一标识符: md5($_GET['id'].$_GET['num'].$_GET['item' ]); // 对于会话列 $ip = $_SERVER['REMOTE_ADDR'];如果这两个匹配,则表示此人在页面上,因此我不需要更新视图列。感谢安德里斯!
-
作为答案发布更新:)