0

我想计算用户访问过的页面总数。问题出在我的代码中,当用户访问页面时,计数器会增加 1,这没关系,但是当用户多次刷新页面时,计数器会不断增加。我想在用户首次访问时增加计数器,但不是在他们刷新页面时。我该如何解决这个问题?

4

4 回答 4

1

最好的方法是使用一些 js 跟踪器,例如Google Analytics。.

如果您不想跟踪页面刷新,您可以使用cookiesession来存储上次增量发生的时间戳,这样您就不会增量直到它过期。

于 2013-07-15T13:03:24.100 回答
1

使用会话

<?php
session_start();
if (!isset($_SESSION['visited']))
{
    $_SESSION['visited'] = 1;
    //increase the page view counter...
}

但是,如果用户禁用了 cookie,这将不起作用,因为没有 cookie 支持会使浏览器无法保留会话 ID(这是会话工作所必需的)。因此,在没有 cookie 的浏览器中刷新仍然会产生过多的点击。

要处理这些情况,您可以记住 IP ( $_SERVER['REMOTE_ADDR']) 并检查给定 IP 是否访问过您的页面。请注意,此解决方案仍然容易受到攻击——依赖于使用代理服务器的“复杂”攻击仍然能够计算过多的点击次数。

最好的选择是使用外部跟踪系统,如Google Analytics

于 2013-07-15T13:03:44.463 回答
0

尝试使用会话,一个非常简单的示例是:

<?php
session_start();
$counter = 0;

if(! isset($_SESSION['visited'])):
        $counter +=1;
        $_SESSION['visited'] = TRUE;
        $_SESSION['counter'] = $counter;
endif;
echo $_SESSION['counter'];
?>
于 2013-07-15T13:10:32.313 回答
0

您可以为此使用 cookie。访问时检查是否设置了 cookie,如果没有为页面设置 cookie(cookie 生命周期可能因您的需要而异),仅在未设置 cookie 时更新计数器。如果您需要复杂的计数器 - 最好使用 Google Analytics 之类的东西。

于 2013-07-15T14:08:42.313 回答