您的位置:首页 >PHP实现唯一用户文章浏览统计方法
发布于2026-04-21 阅读(0)
扫一扫,手机访问

本文介绍一种结合 Cookie 与 Session 的可靠方案,确保每篇文章对同一用户仅统计一次浏览量,避免页面刷新导致重复计数,兼顾安全性与实用性。
本文介绍一种结合 Cookie 与 Session 的可靠方案,确保每篇文章对同一用户仅统计一次浏览量,避免页面刷新导致重复计数,兼顾安全性与实用性。
在构建内容型网站(如音乐作品页、博客文章页)时,准确的“独立用户浏览量”(Unique View Count)比单纯刷新计数更有业务价值。原始代码仅依赖 $_SESSION['recent_posts'][$id],但 Session 在页面重载时仍可能未及时生效或跨请求丢失逻辑边界,导致重复更新;而纯 Cookie 方案又易被清除或伪造。因此,推荐采用 Cookie 主控 + Session 辅助的双层校验策略,既保障用户维度唯一性,又提升服务端可控性。
<?php
require_once '../config.php';
// 1. 安全输入过滤
$id = (int)$_GET['id'];
if ($id <= 0) {
http_response_code(400);
exit('Invalid post ID');
}
// 2. 构建唯一标识键:避免不同文章共用同一 Cookie 导致误判
$cookieKey = 'viewed_post_' . $id;
// 3. 检查用户是否已浏览过该文章(以 Cookie 为权威依据)
if (!isset($_COOKIE[$cookieKey])) {
// 4. 执行数据库更新(防 SQL 注入:使用预处理)
$sql = "UPDATE song SET count = count + 1 WHERE id = ?";
$stmt = $conn->prepare($sql);
$stmt->execute([$id]);
// 5. 设置长期 Cookie(30 天),作用域为根路径,确保跨子目录有效
setcookie($cookieKey, '1', [
'expires' => time() + (86400 * 30),
'path' => '/',
'domain' => '', // 可选:指定域名增强安全性
'secure' => isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on',
'httponly'=> true,
'samesite'=> 'Lax'
]);
// 6. 同步标记到 Session(可选,用于同会话内快速判断)
if (!isset($_SESSION['recent_posts'])) {
$_SESSION['recent_posts'] = [];
}
$_SESSION['recent_posts'][$id] = true;
}
?>通过该方案,你将获得真正反映“独立用户触达”的浏览数据,为内容运营提供可信依据。
上一篇:蛙漫无广告版:沉浸追漫入口推荐
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
9