点击刷新按钮时避免页数统计

时间:2012-10-08 08:52:53

标签: php

我制作了一个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.当它第一次打开时它是okey。但是当有人刷新页面时我想避免这种情况。

所以身体能告诉我怎么能这样做?

4 个答案:

答案 0 :(得分: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;

}

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我猜你可以使用cookies或会话。创建一个包含最新访问时间戳的会话变量。如果同一页面在一小时左右再次加载,则计数器不会增加。

答案 3 :(得分:0)

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