以下是一个简单的PHP用户访问统计代码示例:

// 获取用户IP地址
function getUserIP() {
    $ip = '';
    if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
        $ip = $_SERVER['HTTP_CLIENT_IP'];
    } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    } else {
        $ip = $_SERVER['REMOTE_ADDR'];
    }
    return $ip;
}

// 获取访问次数
function getVisits() {
    $visits = 0;
    if (isset($_COOKIE['visits'])) {
        $visits = intval($_COOKIE['visits']);
    }
    return $visits;
}

// 记录用户访问
function recordVisit() {
    $ip = getUserIP();
    $visits = getVisits();
    $today = date('Y-m-d');
    
    // 更新独立IP访问量
    $ipFile = 'ip.txt';
    $ipData = file_get_contents($ipFile);
    $ipArr = explode("\n", $ipData);
    if (!in_array($ip, $ipArr)) {
        $ipArr[] = $ip;
        file_put_contents($ipFile, implode("\n", $ipArr));
    }
    
    // 更新历史访问量
    $historyFile = 'history.txt';
    $historyData = file_get_contents($historyFile);
    $historyArr = unserialize($historyData);
    if (!isset($historyArr[$today])) {
        $historyArr[$today] = 0;
    }
    $historyArr[$today]++;
    file_put_contents($historyFile, serialize($historyArr));
    
    // 更新今日访问量和访问次数
    $visits++;
    setcookie('visits', $visits, time() + 60 * 60 * 24 * 365); // 保存一年
    if (!isset($_SESSION['today'])) {
        $_SESSION['today'] = $today;
        $todayFile = 'today.txt';
        $todayData = file_get_contents($todayFile);
        $todayArr = unserialize($todayData);
        if (!isset($todayArr[$today])) {
            $todayArr[$today] = 0;
        }
        $todayArr[$today]++;
        file_put_contents($todayFile, serialize($todayArr));
    } else if ($_SESSION['today'] != $today) {
        $_SESSION['today'] = $today;
        $todayFile = 'today.txt';
        $todayData = file_get_contents($todayFile);
        $todayArr = unserialize($todayData);
        if (!isset($todayArr[$today])) {
            $todayArr[$today] = 0;
        }
        $todayArr[$today]++;
        file_put_contents($todayFile, serialize($todayArr));
    }
}

// 记录用户访问
recordVisit();

// 输出统计数据
$ipData = file_get_contents('ip.txt');
$ipArr = explode("\n", $ipData);
$numIPs = count($ipArr);
$historyData = file_get_contents('history.txt');
$historyArr = unserialize($historyData);
$totalVisits = array_sum($historyArr);
$todayData = file_get_contents('today.txt');
$todayArr = unserialize($todayData);
$todayVisits = isset($todayArr[date('Y-m-d')]) ? $todayArr[date('Y-m-d')] : 0;
$visits = getVisits();
echo "独立IP访问量:" . $numIPs . "<br>";
echo "历史访问量:" . $totalVisits . "<br>";
echo "今日访问量:" . $todayVisits . "<br>";
echo "访问次数:" . $visits . "<br>";

该代码使用了四个文件来保存统计数据:

  • ip.txt:记录独立IP地址,每个IP地址占据一行。
  • history.txt:记录历史访问量,使用序列化数组保存,键为日期,值为访问量。
  • today.txt:记录今日访问量,使用序列化数组保存,键为日期,值为访问量。
  • 访问者的cookie和session:保存访问次数和今日日期信息。

该代码先定义了三个函数:

  • getUserIP:获取用户IP地址。
  • getVisits:获取访问次数。
  • recordVisit:记录用户访问,并更新统计数据。

recordVisit函数首先获取用户IP地址,然后更新独立IP访问量,如果该IP地址不在ip.txt文件中,则将其添加到文件末尾。然后更新历史访问量,如果当前日期不在历史记录中,则添加一个新的键值对。最后更新今日访问量和访问次数,如果当前日期和$_SESSION['today']不同,则表示新的一天开始,需要更新今日访问量。

主程序中,首先调用recordVisit函数记录用户访问,然后获取统计数据并输出。获取独立IP访问量只需要读取ip.txt文件并计算行数即可。获取历史访问量和今日访问量需要读取history.txt和today.txt文件,进行反序列化得到数组,然后根据日期获取对应的访问量。

最后获取访问次数需要调用getVisits函数,该函数首先检查是否存在名为visits的cookie,如果存在则将其转换为整数返回,否则返回0。在recordVisit函数中,每次访问都会将visits增加1,并将其保存为cookie。因此,getVisits函数返回的就是访问次数。

php写一个用户访问统计独立ip数据历史访问数据今日访问量等访问次数统计

原文地址: https://www.cveoy.top/t/topic/blPK 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录