单击“刷新”按钮时避免页数统计



我做了一个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。第一次打开就好了。但是当有人刷新页面时,我想避免这种情况。

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

使用会话?

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;
}

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

我想你可以为此使用 cookie 或会话。创建一个会话变量,其中包含最近一次访问的时间戳。如果同一页面在一小时内再次加载,计数器不会增加。

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

最新更新