我制作了一个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。但是当有人刷新页面时我想避免这种情况。
所以身体能告诉我怎么能这样做?
答案 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。在每次进行增量查询之前创建控制变量,并且如果会话变量与您正在查看的页面具有相同的名称,则跳过增量操作。希望有所帮助。