用js和php5.4的统计功能

admin 26天前 28

以下是一个完整的统计访问量的解决方案,使用PHP 5.4处理服务器端计数,JS实现前端展示。方案使用单一txt文件存储所有统计数据。

解决方案结构

  1. counter.php - PHP计数处理器
  2. counter.txt - 数据存储文件
  3. index.html - 前端展示页面

1. 计数器PHP脚本 (counter.php)

php复制<?php// counter.php$dataFile = 'counter.txt';// 初始数据结构$defaultData = [    'total' => 0,    'month' => 0,    'week'  => 0,    'today' => 0,    'last_update' => '0000-00-00'];// 读取数据或初始化if (file_exists($dataFile)) {    $rawData = file_get_contents($dataFile);    $data = unserialize($rawData);    // 文件损坏时重置
    if (!is_array($data)) $data = $defaultData;
} else {    $data = $defaultData;
}// 获取当前时间信息$currentDate = date('Y-m-d');$lastDate = $data['last_update'];// 重置周期计数if ($currentDate != $lastDate) {    // 重置今日计数
    $data['today'] = 0;    
    // 如果是新周(周一)
    if (date('w') == 1 || $lastDate == '0000-00-00') {        $data['week'] = 0;
    }    
    // 如果是新月
    if (date('d') == 1 || $lastDate == '0000-00-00') {        $data['month'] = 0;
    }    
    $data['last_update'] = $currentDate;
}// 增加计数$data['today']++;$data['week']++;$data['month']++;$data['total']++;// 保存数据file_put_contents($dataFile, serialize($data));// 仅返回最新计数(不包含日期数据)header('Content-Type: application/json');echo json_encode([    'today' => $data['today'],    'week'  => $data['week'],    'month' => $data['month'],    'total' => $data['total']
]);?>

2. 数据存储文件 (counter.txt)

首次访问时自动创建,初始内容:

复制a:5:{s:5:"total";i:0;s:5:"month";i:0;s:4:"week";i:0;s:5:"today";i:0;s:11:"last_update";s:10:"0000-00-00";}

3. 前端展示页面 (index.html)

html运行复制<!DOCTYPE html><html><head>
    <title>访问统计</title>
    <style>
        .counter-container { margin: 20px; padding: 15px; border: 1px solid #ddd; }        .counter-item { margin: 10px 0; font-size: 18px; }    </style></head><body>
    <div class="counter-container">
        <h2>网站访问统计</h2>
        <div class="counter-item">今日访问: <span id="today">0</span></div>
        <div class="counter-item">本周访问: <span id="week">0</span></div>
        <div class="counter-item">本月访问: <span id="month">0</span></div>
        <div class="counter-item">总访问量: <span id="total">0</span></div>
    </div>

    <script>
        // 获取统计并更新页面
        function updateCounter() {            var xhr = new XMLHttpRequest();
            xhr.open('GET', 'counter.php', true);
            xhr.onreadystatechange = function() {                if (xhr.readyState == 4 && xhr.status == 200) {                    var data = JSON.parse(xhr.responseText);                    document.getElementById('today').textContent = data.today;                    document.getElementById('week').textContent = data.week;                    document.getElementById('month').textContent = data.month;                    document.getElementById('total').textContent = data.total;
                }
            };
            xhr.send();
        }        // 页面加载时更新
        window.onload = updateCounter;    </script></body></html>

功能说明

  1. 智能重置机制:

    • 每日自动重置今日计数
    • 每周一重置本周计数
    • 每月1号重置本月计数
    • 使用last_update字段跟踪最后更新时间
  2. 数据存储:

    • 使用PHP的serialize()存储结构化数据
    • 单文件存储简化维护
    • 文件损坏时自动重置数据
  3. 前端交互:

    • 页面加载时自动调用计数接口
    • 使用AJAX获取最新数据
    • 无刷新更新统计信息

部署说明

  1. 将三个文件放在同一目录
  2. 确保PHP 5.4+环境
  3. 给counter.txt写权限:
    bash复制chmod 644 counter.txt
  4. 首次访问会自动创建数据文件

注意事项

  1. 访问量统计基于页面加载次数(刷新会增加计数)
  2. 使用JavaScript禁用时无法更新计数(但后端仍会计数)
  3. 如遇高并发访问,考虑添加文件锁:
    php复制$fp = fopen($dataFile, 'c+');if (flock($fp, LOCK_EX)) {    // 读写操作
        flock($fp, LOCK_UN);
    }fclose($fp);

这个方案实现了完整的访问统计功能,同时保证了PHP 5.4的兼容性,前端使用纯JavaScript无需任何库。


猜你喜欢

本站资源仅供研究学习,请勿商用。商用请自行联系软件作者获取授权。如产生法律纠纷,本站概不负责!
    • 游客
      2
         
返回

手游盒子覆盖了 80%的热门手游

己有 2905876人下载

下载惠玩通游戏盒
手机扫描安装惠玩通游戏盒 下载惠玩通游戏盒