这里总访问量是UV,统计方法是不同的浏览器有不同的cookies,24小时访问内访问一次算一个UV,保存在uv.txt上;总UV和总浏览PV是累加的。
<?php
//统计UV
function uv_stat() {
$cookie_name = 'uv_stat';
$expire_time = time() + 86400; // 设置过期时间为 24 小时
$file_name = 'uv.txt';
if (!isset($_COOKIE[$cookie_name])) {
setcookie($cookie_name, 1, $expire_time);
if (file_exists($file_name)) {
$uv = file_get_contents($file_name);
$uv++;
file_put_contents($file_name, $uv);
} else {
file_put_contents($file_name, 1);
}
}
if (file_exists($file_name)) {
$uv = file_get_contents($file_name);
//echo "$uv";
echo "<span>总访问量: " . $uv . " 人次 </span>";
} else {
echo "无法获取累计 UV 总数量";
}
}
//uv_stat();
// 统计PV,先设置时区
date_default_timezone_set('Asia/Shanghai');
// 获取当前日期
$date = date('Y-m-d');
// 获取客户端IP地址
function get_client_ip() {
$ip = '';
if (getenv('HTTP_CLIENT_IP')) {
$ip = getenv('HTTP_CLIENT_IP');
} elseif (getenv('HTTP_X_FORWARDED_FOR')) {
$ip = getenv('HTTP_X_FORWARDED_FOR');
} elseif (getenv('REMOTE_ADDR')) {
$ip = getenv('REMOTE_ADDR');
} else {
$ip = $_SERVER['REMOTE_ADDR'];
}
return $ip;
}
// 统计PV
function count_pv($date) {
$file_name = 'pv.txt';
if (!file_exists($file_name)) {
file_put_contents($file_name, json_encode([$date => 1]));
} else {
$data = json_decode(file_get_contents($file_name), true);
if (isset($data[$date])) {
$data[$date]++;
} else {
$data[$date] = 1;
}
file_put_contents($file_name, json_encode($data));
}
}
// 获取总PV
function get_total_pv() {
$file_name = 'pv.txt';
if (!file_exists($file_name)) {
return 0;
} else {
$data = json_decode(file_get_contents($file_name), true);
return array_sum(array_values($data));
}
}
// 获取今日PV
function get_today_pv($date) {
$file_name = 'pv.txt';
if (!file_exists($file_name)) {
return 0;
} else {
$data = json_decode(file_get_contents($file_name), true);
return isset($data[$date]) ? $data[$date] : 0;
}
}
// 统计PV
count_pv($date);
/*
测试使用
echo '累计PV次数: ' . get_total_pv() . '<br>';
echo '今日PV次数: ' . get_today_pv($date) . '<br>';
例如:总访问量:2317633 人次总浏览量:3742388 人次今日访问:129 人次开始统计日期:2010-05-13
*/
// 显示统计结果
echo uv_stat();
echo "<span> 总浏览量:". get_total_pv() ." 人次</span>"; echo "<span> 今日访问:".get_today_pv($date) ." 人次</span>";
echo "<span> 开始统计日期:2010-05-13</span>";
如果使用了eyoucms 可以在模板footer.htm上这样写
<div id="FootCount">{eyou:php}
require $_SERVER['DOCUMENT_ROOT'] . '/stat.php';
{/eyou:php}</div>
wordpress引入
将stat.php和模板footer.php放在同目录内
<?php get_template_part ('stat'); ?>
完美源码 » php编写网站统计UV 总访问PV 今日PV代码