自己写了一个统计,一个简单的网站流量统计,不错拿出来分享。可以统计当前页面的总访问次数和当前页面的实时在线人数。还可以显示你进入多少次。
样式还有彩色背景渐变盒子,鼠标滑过或点击变成彩色直线,其他样式可以自己再改改。废话不多说直接上代码。
海云博客 | 此文章链接:http://lgnb.asia/index.php/archives/26/
演示图片
1.先来创建数据库表
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;
2.接下来是数据库的链接 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文件了,带着前端如下:
<?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>
就是这些了,一个简单实用的web程序,喜欢就点个赞吧
标签:count,background,cb,visit,stmt,pdo,海云,Mysql,Php From: https://blog.csdn.net/2301_80066325/article/details/145126310