-1

我制作了一个 php 脚本来计算查看我网站页面的用户数量。这是我的代码

<?php   
    require_once ('test.php');

    $institute_id = 14;

    $q = "INSERT INTO page_views2 ( institute_id, views) VALUES ( $institute_id, 1)
         ON DUPLICATE KEY UPDATE views=views+1"
         ; 
    $r = mysqli_query ($dbc, $q);

?>

我将此添加到我的网页顶部,并且当我打开页面时它可以正常工作(视图增加)。但我的问题是当我刷新页面时,页面浏览量增加 1。第一次打开时没问题。但是当有人刷新页面时,我想避免这种情况。

那么任何机构都可以告诉我我该怎么做吗?

4

4 回答 4

2

使用会话?

require_once ('test.php');

$institute_id = 14;

//if no such session exists, assume that its their first time viewing.
if(!isset($_SESSION[$institute_id.'_v'])){

    //insert
    $q = "INSERT INTO page_views2 ( institute_id, views) VALUES ( $institute_id, 1)
         ON DUPLICATE KEY UPDATE views=views+1"
         ; 
    $r = mysqli_query ($dbc, $q);

    //set session variable saying they've viewed this institutions page.
    $_SESSION[$institute_id.'_v'] = 1;

}
于 2012-10-08T08:57:43.583 回答
0

您可以尝试使用 2 个变量,一个定义您正在访问的每个页面的名称,一个定义 $_SESSION 变量。在使用查询增加计数器后,您可以将 $_SESSION 设置为您正在查看的页面的名称。每次在进行增量查询之前创建控制变量,如果会话变量与您正在查看的页面同名,则跳过增量操作。希望有帮助。

于 2012-10-08T09:11:24.450 回答
0

刷新页面会导致新的页面请求,因此它显然会在服务器端触发您的脚本。没有办法改变这种行为。您可以做的是实施某种检查,如果用户再次请求(刷新)相同的页面。您可以在会话/cookie 中存储一些信息,然后只比较这些值。

于 2012-10-08T08:57:41.257 回答
0

我猜你可以为此使用 cookie 或会话。制作一个保存最新访问时间戳的会话变量。如果同一页面在一个小时左右内再次加载,则计数器不会增加。

于 2012-10-08T08:58:17.057 回答