一、前期准备
1.1 前提条件
你已经完成宝塔面板安装,服务器已经启用PHP 5.6及以上版本、MySQL 5.5及以上版本,以上都是宝塔默认安装的内容,不需要额外部署。
1.2 准备信息
- 已解析到你的服务器IP的域名(可使用已有站点的二级域名)
- 预留文本记录后续的数据库账号密码信息
二、创建统计数据库
按以下步骤操作创建存储统计数据的数据库和数据表:
- 登录宝塔面板后台,点击左侧菜单栏【数据库】
- 点击页面右上角【添加数据库】按钮,在弹出框中填写配置:
- 数据库名:填写
ad_stats(也可自定义,后续对应修改即可)
- 用户名:填写
ad_stats
- 密码:点击生成随机密码,把生成的账号密码复制到预留文本中
- 访问权限:选择本地即可
- 点击提交完成数据库创建
- 点击刚创建数据库右侧的【管理】按钮,进入phpMyAdmin管理页,点击顶部【SQL】标签,粘贴以下SQL语句,点击执行完成数据表创建:
```sql
CREATE TABLE IF NOT EXISTS `ad_click` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`ad_id` varchar(50) NOT NULL COMMENT '广告ID,区分不同广告',
`click_ip` varchar(50) NOT NULL COMMENT '点击用户IP',
`click_time` datetime NOT NULL COMMENT '点击时间',
`referer` varchar(255) DEFAULT NULL COMMENT '点击来源页面',
PRIMARY KEY (`id`),
KEY `ad_id` (`ad_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
```
三、上传统计核心文件
进入你要放统计的站点根目录(宝塔中点击网站列表右侧的根目录即可直接进入文件管理),创建两个核心文件,分别修改开头的数据库配置即可直接使用:
第一个文件:命名为ad-click.php,粘贴以下代码,修改数据库密码配置:
```php
```
第二个文件:命名为ad-view.php,用来查看统计数据,同样修改数据库配置:
```php
广告点击统计
| 广告ID | 总点击量 | 最近点击时间 |
{$row['ad_id']} | {$row['total']} | {$row['last_time']} | ";
}
mysqli_close($conn);
?>
```
修改完配置后保存两个文件,核心部署就完成了。
四、嵌入广告统计链接

把你需要统计点击的广告链接替换为统计跳转链接,链接格式如下:
https://你的站点域名/ad-click.php?ad_id=广告唯一标识&target=广告目标地址
- ad_id参数:用来区分不同位置的广告,比如首页首屏Banner可以填
home_top_banner,文章页侧边广告填post_side_ad1,方便后续分广告查看数据
- target参数:就是你原来的广告目标跳转地址,如果目标地址本身包含&符号,在HTML中编写链接时需要把&替换为
&,避免参数解析错误
替换完成后,每一次用户点击广告都会自动把数据记录到数据库中。
五、加访问保护,查看统计数据
统计数据属于隐私信息,必须给查看页添加访问保护,操作步骤如下:
- 在宝塔网站列表,点击对应站点右侧的设置
- 找到左侧菜单目录保护,点击添加保护目录
- 保护目录填写
/,设置自定义的访问用户名和密码,点击保存
完成后你就可以通过https://你的域名/ad-view.php访问,输入刚才设置的用户名密码,就能看到所有广告的点击统计汇总数据。
六、常见优化与问题排查
1. 过滤同IP短时间重复点击
如果不想统计同一个用户24小时内的重复点击,可以在ad-click.php中连接数据库之后、插入数据之前加上以下代码:
```php
// 24小时内同IP同广告只统计一次
$check_sql = "SELECT id FROM ad_click WHERE ad_id = '$ad_id' AND click_ip = '$ip' AND click_time > DATE_SUB(NOW(), INTERVAL 24 HOUR)";
$check_res = mysqli_query($conn, $check_sql);
if(mysqli_num_rows($check_res) > 0){
header("Location: $target");
exit;
}
```
2. 跳转失败排查
- 检查target参数是否正确编码,目标地址不能有未转义的特殊字符
- 检查数据库配置中的密码、库名是否和之前创建的一致,宝塔默认数据库地址就是localhost,不需要改端口