编程笔记

编程笔记

简单的网站IP和用户访问统计php文件实例。
2025-02-28

首先,在根目录创建一个tongji.php文件!写入代码:

<?php
// 获取用户的 IP 地址
$user_ip = $_SERVER['REMOTE_ADDR'];

// 获取当前访问的链接
$current_url = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";

// 获取当前访问时间
$visit_time = date('Y-m-d H:i:s');
$visit_date = date('Y-m-d', strtotime($visit_time));

// 记录访问信息到日志文件
$log_file = 'tongji.txt';
$log_entry = "{$visit_date} - {$visit_time} - {$user_ip} - {$current_url}\n";
file_put_contents($log_file, $log_entry, FILE_APPEND);
?>

然后在根目录创建一个tongji.txt的空白文件

=======

然后继续创建一个读取文件 tongjiip.php,写入代码:

<?php
// 统计用户访问次数和链接
function count_user_visits() {
    $log_file = 'tongji.txt';
    if (!file_exists($log_file)) {
        return [];
    }

    $lines = file($log_file, FILE_IGNORE_NEW_LINES);
    $daily_user_counts = [];
    $daily_user_url_counts = [];
    $daily_unique_ips = [];

    foreach ($lines as $line) {
        $parts = explode(' - ', $line);
        if (count($parts) >= 4) {
            $visit_date = $parts[0];
            $user_ip = $parts[2];
            $url = $parts[3];

            // 统计每日用户总访问次数
            if (!isset($daily_user_counts[$visit_date])) {
                $daily_user_counts[$visit_date] = [];
            }
            if (!isset($daily_user_counts[$visit_date][$user_ip])) {
                $daily_user_counts[$visit_date][$user_ip] = 0;
            }
            $daily_user_counts[$visit_date][$user_ip]++;

            // 统计每日用户访问每个链接的次数
            if (!isset($daily_user_url_counts[$visit_date])) {
                $daily_user_url_counts[$visit_date] = [];
            }
            if (!isset($daily_user_url_counts[$visit_date][$user_ip])) {
                $daily_user_url_counts[$visit_date][$user_ip] = [];
            }
            if (!isset($daily_user_url_counts[$visit_date][$user_ip][$url])) {
                $daily_user_url_counts[$visit_date][$user_ip][$url] = 0;
            }
            $daily_user_url_counts[$visit_date][$user_ip][$url]++;

            // 统计每日不同 IP 的数量
            if (!isset($daily_unique_ips[$visit_date])) {
                $daily_unique_ips[$visit_date] = [];
            }
            if (!in_array($user_ip, $daily_unique_ips[$visit_date])) {
                $daily_unique_ips[$visit_date][] = $user_ip;
            }
        }
    }

    return [
        'daily_user_counts' => $daily_user_counts,
        'daily_user_url_counts' => $daily_user_url_counts,
        'daily_unique_ip_counts' => array_map('count', $daily_unique_ips)
    ];
}

// 调用统计函数
$stats = count_user_visits();

// 输出统计结果
echo "<h2>每日用户总访问次数统计</h2>";
foreach ($stats['daily_user_counts'] as $date => $user_counts) {
    echo "<h3>日期: {$date}</h3>";
    foreach ($user_counts as $user_ip => $count) {
        echo "<p>IP: {$user_ip}, 访问次数: {$count}</p>";
    }
}

echo "<h2>每日用户访问链接详细统计</h2>";
foreach ($stats['daily_user_url_counts'] as $date => $user_url_counts) {
    echo "<h3>日期: {$date}</h3>";
    foreach ($user_url_counts as $user_ip => $urls) {
        echo "<p>IP: {$user_ip}</p>";
        foreach ($urls as $url => $count) {
            echo "<p>  链接: {$url}, 访问次数: {$count}</p>";
        }
    }
}

echo "<h2>每日不同 IP 总数统计</h2>";
foreach ($stats['daily_unique_ip_counts'] as $date => $count) {
    echo "<p>日期: {$date}, 不同 IP 的总数: {$count}</p>";
}
?>

然后在全局底部,也就是放统计代码的位置

<?php include('tongji.php'); ?>

============================

域名/tongjiip.php 就可以查看ip统计和用户访问地址了。