侧边栏壁纸

Php+Mysql统计网页总访问次数和实时在线人数

2024年09月05日 351阅读 11评论 7点赞

自己写了一个统计,不错拿出来分享。可以统计当前页面的总访问次数和当前页面的实时在线人数。还可以显示你进入多少次。

样式还有彩色背景盒子鼠标滑过或点击变成彩色直线,其他样式可以自己再改改。废话不多说直接上代码。

废话不多说直接上代码,拿走吱~一声 表情

效果图片

统计网页总访问次数和在线人数效果图片


先来创建数据库表

sql代码

CREATE TABLE `total_visits` (
  `id` int(11) NOT NULL,
  `visit_count` int(11) DEFAULT '1',
  `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE `online_users` (
  `id` int(11) NOT NULL,
  `ip_address` varchar(45) NOT NULL,
  `user_agent` varchar(255) DEFAULT NULL,
  `last_activity` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

接下来是数据库的连接

db.php

<?php
$host = 'localhost';
$dbname = '你的数据库名';
$username = '你的用户名';
$password = '你的密码';
$port = '3306';

try {
    $pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    die("Could not connect to the database $dbname :" . $e->getMessage());
}

function getPDO() {
    global $pdo;
    return $pdo;
}
?>

接下来就是主要的index.php文件了,带着前端如下:

index.php

<?php
require_once 'db.php'; //连接数据库文件

// 更新在线人数
function updateOnlineUsers($pdo) {
    $current_time = date('Y-m-d H:i:s');
    // 清除超过 5 分钟未活动的用户
    $pdo->exec("DELETE FROM cb_online_users WHERE last_activity < DATE_SUB('$current_time', INTERVAL 5 MINUTE)");
    
    // 获取 IP 地址和 User Agent
    $ip_address = $_SERVER['REMOTE_ADDR'];
    $user_agent = $_SERVER['HTTP_USER_AGENT'];
    
    // 检查是否已经记录过这个 IP 地址
    $stmt = $pdo->prepare("SELECT * FROM cb_online_users WHERE ip_address = ?");
    $stmt->execute([$ip_address]);
    $user = $stmt->fetch();
    
    if ($user) {
        // 如果已经存在,则更新最后活动时间
        $pdo->exec("UPDATE cb_online_users SET last_activity = '$current_time' WHERE ip_address = '$ip_address'");
    } else {
        // 如果不存在,则插入新记录
        $pdo->exec("INSERT INTO cb_online_users (ip_address, user_agent) VALUES ('$ip_address', '$user_agent')");
    }
}

// 计算在线人数
 function getOnlineCount($pdo) {
    $stmt = $pdo->query("SELECT COUNT(*) AS count FROM cb_online_users");
    $result = $stmt->fetch(PDO::FETCH_ASSOC);
    return $result['count'];
}

// 增加总访问次数
function incrementVisitCount($pdo) {
    // 检查是否已经有记录
    $stmt = $pdo->query("SELECT * FROM cb_total_visits ORDER BY id DESC LIMIT 1");
    $visit = $stmt->fetch(PDO::FETCH_ASSOC);

    if (!$visit) {
        // 如果没有记录,则添加一条新记录
        $pdo->exec("INSERT INTO cb_total_visits (visit_count) VALUES (1)");
    } else {
        // 如果有记录,则增加访问次数
        $visit_id = $visit['id'];
        $new_count = $visit['visit_count'] + 1;
        $pdo->exec("UPDATE cb_total_visits SET visit_count = $new_count WHERE id = $visit_id");
    }
}

// 获取总访问次数
function getTotalVisits($pdo) {
    $stmt = $pdo->query("SELECT SUM(visit_count) AS total FROM cb_total_visits");
    $result = $stmt->fetch(PDO::FETCH_ASSOC);
    return $result['total'];
}

// 执行更新操作
updateOnlineUsers(getPDO());
incrementVisitCount(getPDO());

// 获取在线人数和总访问次数
$onlineCount = getOnlineCount(getPDO());
$totalVisits = getTotalVisits(getPDO());
?>
<!-- 显示结果 -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Website Statistics</title>
<style>
body { font-family: Arial, sans-serif; }
.container { max-width: 600px; margin: 0 auto; padding: 20px; }
.stat-box { background-color: #f9f9f9; padding: 10px; border-radius: 5px; margin-bottom: 20px; }
h2 { color: #333; }
p { color: #555; }
</style>
</head>
<body><!-- 显示结果 -->
        <style>
            .container { max-width: 600px; margin: 0 auto; padding: 20px; }
            .stat-box { background-color: #f9f9f9; padding: 10px; border-radius: 5px; margin-bottom: 20px; }
            .stat-box∷before{
            content: "";
            position: absolute;
            width: 100%;
            height: 50%;
            background: linear-gradient(#00ccff,#d500f9);
            }
        </style>
            <style>
        .text-bg {
             color: #ffffff;
             padding: 0 2vmin;
             background: linear-gradient(30deg, #2cd8d5, #c5c1ff, #ffbac3) center;
             background-size: 100% 90%;
             background-repeat: no-repeat;
             transition: all 0.4s
         }
        
         .text-bg:hover {
             background-size: 100% 10%;
             background-position-y: 88%;
             color: #2c2c2c;
             text-shadow: 0.05em 0.05em 0 #fcfcfc, -0.05em 0.05em 0 #fcfcfc, 0 0.05em 0 #fcfcfc
         }
    </style>
            <div class="container">
                <div class="stat-box text-bg">
                    <h4>当前网站在线人数</h4>
                    <h2 style="color:#FF3333"><?php echo $onlineCount; ?></h2>
                </div>
                <div class="stat-box text-bg">
                    <h4>网站当前总访问次数</h4>
                    <h2 style="color:#FF3333"> <?php echo $totalVisits; ?></h2>
                </div>
                      <div class="stat-box text-bg">
                    <h4>你已经访问了</h4>
                    <h2 style="color:#FF3333" class="fangw"><span id="count">0</span>次</h2>
                </div>
            <script>
                // 获取当前访问次数
                let count = localStorage.getItem("pageCount");
                
                // 如果没有访问过该网页,则设置访问次数为1
                if (!count) {
                    localStorage.setItem("pageCount", 1);
                    count = 1;
                } else {
                    // 否则,将访问次数加1
                    count++;
                    localStorage.setItem("pageCount", count);
                }
                
                // 将访问次数显示到页面上
                document.getElementById("count").textContent = count;
            </script>
            </div>
            </body>
            </html>

就是这些了喜欢点个赞,拿走吱~一声
邮箱bh_lg-01@outlook.com

7
打赏

—— 评论区 ——

昵称
邮箱
网址
取消
  1. 头像
    629401918
    Android 10   Microsoft Edge 127
    回复

    ???

  2. 头像
    _北海彡 博主
    Android 10   Microsoft Edge 127
    回复

    画图

    1. 头像
      1876438710
      Android 14   小米浏览器 18
      回复
      @_北海彡

      测试回复邮箱发送

  3. 头像
    _北海彡 博主
    Android 10   Microsoft Edge 127
    回复

    (☆ω☆)QQQQ表情表情

    1. 头像
      _北海彡 博主
      Android 10   Microsoft Edge 127
      回复
      @_北海彡

      QQ

      1. 头像
        _北海彡 博主
        Android 10   Microsoft Edge 127
        回复
        @_北海彡

        画图

  4. 头像
    yvcoqpnapp
    Windows 10 x64 Edition   搜狗高速浏览器
    回复

    技术伦理的探讨体现人文科技平衡意识。

  5. 头像
    eybnfmxfvk
    Windows 10 x64 Edition   搜狗高速浏览器
    回复

    对权力结构的解构充满勇气与智慧。

  6. 头像
    ipeolbydfx
    Windows XP   Internet Explorer
    回复

    Php Mysql统计网页总访问次数和实时在线人数 - LGZ-海云博客
    ipeolbydfx http://www.g755k6ep282drecs4q52wzoc6d75l617s.org/
    [url=http://www.g755k6ep282drecs4q52wzoc6d75l617s.org/]uipeolbydfx[/url]
    aipeolbydfx

  7. 头像
    syrdriiky
    Windows XP   Internet Explorer
    回复

    Php Mysql统计网页总访问次数和实时在线人数 - LGZ-海云博客
    syrdriiky http://www.g0et3c3g8k2j9ibn29ndr5g2682m98x0s.org/
    [url=http://www.g0et3c3g8k2j9ibn29ndr5g2682m98x0s.org/]usyrdriiky[/url]
    asyrdriiky

  8. 头像
    nqypwirqhj
    Windows XP   Internet Explorer
    回复

    Php Mysql统计网页总访问次数和实时在线人数 - LGZ-海云博客
    anqypwirqhj
    nqypwirqhj http://www.gk7b8hd68i64t2t0nfjsd98z0698e96ys.org/
    [url=http://www.gk7b8hd68i64t2t0nfjsd98z0698e96ys.org/]unqypwirqhj[/url]

人生倒计时
最新评论
舔狗日记

海云博客公告

海云博客、云服务、API、霹雳霹雳、百宝箱、LGZ、影视、卡密网等由于特殊原因将于2025年3月-6月末暂时停更停维护


正在全力投入开发①音乐解析器 全新UI 功能繁多 可以导入歌单 就像一个免费多功能音乐软件
②多功能影视解析,可免费下载!
③聚合短视频解析保存下载、去水印等.
均可使用登录注册可以使用QQ和邮箱注册.开放开发日志查询(现暂时停止访问日志).

全部免费,全新UI,实用功能!


博客先这样吧,在搞子比很快就好了
欢迎!
一天只弹一次
朕已阅

Warning: Invalid argument supplied for foreach() in /www/wwwroot/mnbt.20739403/usr/plugins/Clogin/Plugin.php on line 158