嘿,伙计们,我正在为一个客户创建一个小的产品目录。我目前正在尝试弄清楚如何让用户按“受欢迎程度”进行排序。我认为最简单/最简单的方法是在每个产品记录中都有一个"views“字段。
最初,我并没有仔细考虑这一点(嗯),我想当调用检索特定产品的函数时,我会在“视图”计数上加一。当然,这样做的问题是,它没有考虑到有人刷新页面30,000次。
做这件事最好的方法是什么?php有没有任何方法来查看一次访问是否是唯一的?
我正在使用php/codeigniter/mysql/html/css/javascript/jquery.
发布于 2010-01-09 11:08:15
您可以在会话变量中存储客户端是否已经访问过该页面,并运行相同的视图查询。现在,这不会阻止用户关闭浏览器、重新打开和返回,但它应该提供适当的保护级别。如果这还不够,您可以转到cookies,然后是用户注册或IP跟踪。
好的,会话方法。在你的页面上,你运行:
session_start();
if(!isset($_SESSION['page_views']['some_unique_string'])){
$_SESSION['page_views']['some_unique_string'] = true;
// update your database
}请注意,您需要确保'some_unique_string'对于跟踪视图的页面是唯一的。
对于cookie,这种方法几乎是相同的。
发布于 2010-01-09 11:23:43
如果你想确保页面视图是唯一的,你必须存储所有页面视图的远程IP。确实没有其他可靠的方法来知道访问者是否访问过。将cookie放到他们的系统上以后会失败,原因有很多,他们清除了cookie,他们使用了不同的浏览器,等等。你需要一个视图表格,其中包含一个外键,指向你要统计的任何视图。
你可以在我的免费评级图像脚本中找到所有这类代码:
下面是一个演示:
看看addImageRating.php脚本。
https://stackoverflow.com/questions/2032194
复制相似问题