我做了一个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。每次在进行增量查询之前创建控制变量,如果会话变量与您正在查看的页面同名,请跳过增量操作。希望有帮助。