PHP 网站访问统计:无需数据库,简单实现每日 IP 和 PV 统计
PHP 网站访问统计:无需数据库,简单实现每日 IP 和 PV 统计
本文将详细介绍如何使用 PHP 和 HTML 实现一个简单的网站访问统计功能,无需数据库,将统计数据存储在本地文件。代码示例演示了如何记录每日的访问 IP 和 PV 量,并以清晰易懂的方式在 HTML 页面上展示数据。
代码实现
以下是用 PHP 和 HTML 编写的简单网站访问统计功能的代码:
index.php
<?php
$filename = 'stats.txt';
// 获取今日和昨日的日期
$today = date('Y-m-d');
$yesterday = date('Y-m-d', strtotime('-1 day'));
// 初始化今日和昨日的 IP 和 PV 量
$todayIP = 0;
$todayPV = 0;
$yesterdayIP = 0;
$yesterdayPV = 0;
// 检查文件是否存在
if (file_exists($filename)) {
// 读取文件内容
$data = file_get_contents($filename);
// 解析文件内容为数组
$stats = unserialize($data);
// 检查今日数据是否存在
if (isset($stats[$today])) {
$todayIP = $stats[$today]['ip'];
$todayPV = $stats[$today]['pv'];
}
// 检查昨日数据是否存在
if (isset($stats[$yesterday])) {
$yesterdayIP = $stats[$yesterday]['ip'];
$yesterdayPV = $stats[$yesterday]['pv'];
}
}
// 增加今日 PV 量
$todayPV++;
// 获取访问者的 IP 地址
$ip = $_SERVER['REMOTE_ADDR'];
// 检查今日 IP 是否已经存在
if (isset($stats[$today]['ips'][$ip])) {
// 如果 IP 已存在,则不增加 IP 量
$todayIP = $stats[$today]['ip'];
} else {
// 如果 IP 不存在,则增加 IP 量
$todayIP++;
$stats[$today]['ips'][$ip] = true;
}
// 更新今日的数据
$stats[$today] = [
'ip' => $todayIP,
'pv' => $todayPV,
'ips' => $stats[$today]['ips'] ?? []
];
// 将数据序列化为字符串
$data = serialize($stats);
// 将数据写入文件
file_put_contents($filename, $data);
?>
<!DOCTYPE html>
<html>
<head>
<title>网站访问统计</title>
</head>
<body>
<h1>网站访问统计</h1>
<h2>今日数据</h2>
<p>IP: <?php echo $todayIP; ?></p>
<p>PV: <?php echo $todayPV; ?></p>
<h2>昨日数据</h2>
<p>IP: <?php echo $yesterdayIP; ?></p>
<p>PV: <?php echo $yesterdayPV; ?></p>
</body>
</html>
代码解析
- 获取日期:代码首先获取今日和昨日的日期,用于统计数据的分组。
- 初始化统计数据:初始化今日和昨日的 IP 和 PV 量为 0,以便后续统计。
- 读取统计数据:代码检查名为
stats.txt的文件是否存在,如果存在则读取文件内容并将其解析为数组。 - 获取今日和昨日的 IP 和 PV:代码检查今日和昨日的数据是否存在,如果存在则获取相应的 IP 和 PV 量。
- 增加今日 PV:每次访问页面时,今日的 PV 量都会增加 1。
- 获取访问者 IP:代码获取访问者的 IP 地址,用于统计独立访问次数。
- 检查今日 IP 是否存在:代码检查今日的 IP 是否已存在,如果存在则不增加 IP 量,否则增加 IP 量。
- 更新统计数据:代码更新今日的 IP 和 PV 量,并将其序列化为字符串,最后将数据写入
stats.txt文件。 - 显示统计数据:在 HTML 部分,代码显示了今日和昨日的 IP 和 PV 量。
总结
这段代码简单易懂,可以帮助您快速实现网站访问统计功能,无需使用数据库,只需将数据存储在本地文件即可。您可以根据自己的需要修改代码,例如增加更多统计数据,或者将数据存储到数据库中。
原文地址: http://www.cveoy.top/t/topic/6rp 著作权归作者所有。请勿转载和采集!