导读:本期聚焦于小伙伴创作的《如何设置php网站访问统计_访问来源分析与用户行为统计配置方法》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何设置php网站访问统计_访问来源分析与用户行为统计配置方法》有用,将其分享出去将是对创作者最好的鼓励。

php网站访问统计是了解用户访问情况、优化网站体验的重要功能,通过记录访问数据并分析,可以掌握用户来源、访问偏好等核心信息。下面我们就一步步实现完整的访问统计配置。

如何设置php网站访问统计_访问来源分析与用户行为统计配置方法

一、环境准备与数据库设计

首先需要准备php运行环境和MySQL数据库,我们需要创建一张表来存储访问相关的数据,表结构如下:

CREATE TABLE `visit_log` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `ip` varchar(50) DEFAULT NULL COMMENT '访问者IP',
  `visit_time` datetime DEFAULT NULL COMMENT '访问时间',
  `referer` varchar(500) DEFAULT NULL COMMENT '访问来源页面',
  `user_agent` varchar(500) DEFAULT NULL COMMENT '用户浏览器信息',
  `page_url` varchar(500) DEFAULT NULL COMMENT '访问的页面地址',
  `stay_time` int(11) DEFAULT 0 COMMENT '停留时长,单位秒',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

二、基础访问数据采集实现

我们可以在网站的公共入口文件或者每个页面的头部引入统计代码,自动采集用户的访问信息并存入数据库。下面是核心的采集代码:

<?php
// 数据库连接配置
$db_host = '127.0.0.1';
$db_user = 'root';
$db_pass = '123456';
$db_name = 'test_db';

// 建立数据库连接
$conn = new mysqli($db_host, $db_user, $db_pass, $db_name);
if ($conn->connect_error) {
    die("数据库连接失败: " . $conn->connect_error);
}

// 采集访问数据
$ip = $_SERVER['REMOTE_ADDR']; // 获取访问者IP
$visit_time = date('Y-m-d H:i:s'); // 当前访问时间
$referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '直接访问'; // 访问来源
$user_agent = $_SERVER['HTTP_USER_AGENT']; // 浏览器信息
$page_url = $_SERVER['REQUEST_URI']; // 当前访问页面地址

// 插入访问记录到数据库
$sql = "INSERT INTO visit_log (ip, visit_time, referer, user_agent, page_url, stay_time) 
        VALUES ('$ip', '$visit_time', '$referer', '$user_agent', '$page_url', 0)";
if ($conn->query($sql) === TRUE) {
    $visit_id = $conn->insert_id; // 获取本次访问记录的ID,用于后续计算停留时长
    // 将访问ID存入session,用户离开页面时更新停留时长
    session_start();
    $_SESSION['visit_id'] = $visit_id;
} else {
    // 统计失败不影响页面正常展示,仅记录错误日志
    error_log("访问统计插入失败: " . $conn->error);
}
$conn->close();
?>

三、用户停留时长统计

要统计用户在页面的停留时长,可以在页面底部添加退出时的上报逻辑,通过js在用户离开页面时发送请求更新停留时间:

<?php
// 假设这个文件是update_stay_time.php,用于接收停留时长更新请求
session_start();
if (isset($_SESSION['visit_id']) && isset($_POST['stay_time'])) {
    $visit_id = $_SESSION['visit_id'];
    $stay_time = intval($_POST['stay_time']);
    
    $db_host = '127.0.0.1';
    $db_user = 'root';
    $db_pass = '123456';
    $db_name = 'test_db';
    $conn = new mysqli($db_host, $db_user, $db_pass, $db_name);
    
    $sql = "UPDATE visit_log SET stay_time = $stay_time WHERE id = $visit_id";
    $conn->query($sql);
    $conn->close();
}
?>

对应的前端js代码如下,放在页面底部:

<script>
// 记录页面进入时间
var enterTime = new Date().getTime();
// 页面卸载时计算停留时长并上报
window.addEventListener('beforeunload', function() {
    var leaveTime = new Date().getTime();
    var stayTime = Math.round((leaveTime - enterTime) / 1000); // 转换为秒
    // 发送异步请求更新停留时长
    var xhr = new XMLHttpRequest();
    xhr.open('POST', '/update_stay_time.php', false); // 同步请求确保数据发送完成
    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xhr.send('stay_time=' + stayTime);
});
</script>

四、访问来源与用户行为分析实现

采集到数据后,我们可以通过sql查询实现访问来源和用户行为的分析,以下是常见的分析场景代码示例:

1. 统计不同访问来源的访问量

<?php
$conn = new mysqli('127.0.0.1', 'root', '123456', 'test_db');
// 统计来源为搜索引擎、外部链接、直接访问的数量
$sql = "SELECT 
    CASE 
        WHEN referer LIKE '%baidu.com%' OR referer LIKE '%google.com%' THEN '搜索引擎'
        WHEN referer != '直接访问' THEN '外部链接'
        ELSE '直接访问'
    END as source_type,
    COUNT(*) as visit_count
FROM visit_log
GROUP BY source_type";
$result = $conn->query($sql);
while ($row = $result->fetch_assoc()) {
    echo "来源类型: " . $row['source_type'] . ",访问量: " . $row['visit_count'] . "<br>";
}
$conn->close();
?>

2. 统计热门访问页面

<?php
$conn = new mysqli('127.0.0.1', 'root', '123456', 'test_db');
$sql = "SELECT page_url, COUNT(*) as visit_count, AVG(stay_time) as avg_stay 
        FROM visit_log 
        GROUP BY page_url 
        ORDER BY visit_count DESC 
        LIMIT 10";
$result = $conn->query($sql);
echo "<table border='1'>
        <tr><th>页面地址</th><th>访问量</th><th>平均停留时长(秒)</th></tr>";
while ($row = $result->fetch_assoc()) {
    echo "<tr><td>" . $row['page_url'] . "</td><td>" . $row['visit_count'] . "</td><td>" . $row['avg_stay'] . "</td></tr>";
}
echo "</table>";
$conn->close();
?>

3. 统计用户的时段访问分布

<?php
$conn = new mysqli('127.0.0.1', 'root', '123456', 'test_db');
$sql = "SELECT HOUR(visit_time) as visit_hour, COUNT(*) as visit_count 
        FROM visit_log 
        GROUP BY visit_hour 
        ORDER BY visit_hour";
$result = $conn->query($sql);
echo "各时段访问量分布:<br>";
while ($row = $result->fetch_assoc()) {
    echo $row['visit_hour'] . "时: " . $row['visit_count'] . "次<br>";
}
$conn->close();
?>

五、注意事项

  • 采集IP时如果需要获取真实IP,需要额外处理反向代理场景下的HTTP_X_FORWARDED_FOR头部信息
  • 访问数据量较大时,可以定期将历史数据归档到其他表,避免主表数据过大影响查询性能
  • 用户停留时长的统计存在一定误差,仅作为参考使用,不适合作为精准数据分析的唯一依据
  • 如果用户禁用了js,停留时长的统计会失效,可以根据实际需求选择是否保留该功能

按照以上步骤配置完成后,就可以实现php网站的基础访问统计、访问来源分析与用户行为统计功能,后续也可以根据业务需求扩展更多的统计维度。

php访问统计访问来源分析用户行为统计MySQL修改时间:2026-05-28 16:40:13

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。