本文目录导读:

我来为你介绍PHP项目分享和外链追踪的相关内容。
PHP项目分享
开源PHP项目推荐
管理系统
- WordPress - 最流行的博客/CMS系统
- Drupal - 企业级CMS框架
- Joomla - 灵活的多语言CMS
- Laravel Blog - 基于Laravel的博客系统
框架类
- Laravel - 优雅的PHP框架
- Symfony - 企业级PHP框架
- CodeIgniter - 轻量级框架
- Yii2 - 高性能框架
电商系统
- Magento - 企业级电商平台
- WooCommerce - WordPress电商插件
- OpenCart - 轻量级电商系统
项目分享平台
GitHub - https://github.com
GitLab - https://gitlab.com
Bitbucket - https://bitbucket.org
Packagist - https://packagist.org (PHP包管理)
外链追踪系统
基础外链追踪实现
<?php
// 外链追踪核心类
class LinkTracker {
private $db;
private $table = 'link_clicks';
public function __construct($db) {
$this->db = $db;
}
// 生成追踪链接
public function generateTrackLink($originalUrl, $campaignId = null) {
$trackId = md5(uniqid() . time());
// 保存到数据库
$stmt = $this->db->prepare("
INSERT INTO {$this->table}
(track_id, original_url, campaign_id, created_at)
VALUES (?, ?, ?, NOW())
");
$stmt->execute([$trackId, $originalUrl, $campaignId]);
// 返回追踪URL
return "https://yourdomain.com/track/{$trackId}";
}
// 处理点击
public function handleClick($trackId) {
// 记录点击信息
$clickData = [
'ip' => $_SERVER['REMOTE_ADDR'],
'user_agent' => $_SERVER['HTTP_USER_AGENT'],
'referer' => $_SERVER['HTTP_REFERER'] ?? '',
'timestamp' => date('Y-m-d H:i:s')
];
// 更新点击统计
$stmt = $this->db->prepare("
UPDATE {$this->table}
SET click_count = click_count + 1,
last_clicked = NOW(),
click_data = JSON_ARRAY_APPEND(click_data, '$', ?)
WHERE track_id = ?
");
$stmt->execute([json_encode($clickData), $trackId]);
// 获取原始URL并跳转
$stmt = $this->db->prepare("SELECT original_url FROM {$this->table} WHERE track_id = ?");
$stmt->execute([$trackId]);
$result = $stmt->fetch();
if ($result) {
header('Location: ' . $result['original_url']);
exit;
}
}
}
?>
数据库结构
CREATE TABLE link_clicks (
id INT AUTO_INCREMENT PRIMARY KEY,
track_id VARCHAR(32) UNIQUE,
original_url TEXT NOT NULL,
campaign_id VARCHAR(50),
click_count INT DEFAULT 0,
created_at DATETIME,
last_clicked DATETIME,
click_data JSON,
INDEX idx_track_id (track_id),
INDEX idx_campaign (campaign_id)
);
CREATE TABLE click_details (
id INT AUTO_INCREMENT PRIMARY KEY,
track_id VARCHAR(32),
ip_address VARCHAR(45),
user_agent TEXT,
referer_url TEXT,
country VARCHAR(100),
city VARCHAR(100),
clicked_at DATETIME,
FOREIGN KEY (track_id) REFERENCES link_clicks(track_id)
);
高级追踪功能
<?php
// 高级追踪系统
class AdvancedLinkTracker {
// 参数追踪(UTM参数)
public function generateUTMLink($url, $params) {
$utmParams = [
'utm_source' => $params['source'] ?? '',
'utm_medium' => $params['medium'] ?? '',
'utm_campaign' => $params['campaign'] ?? '',
'utm_content' => $params['content'] ?? '',
'utm_term' => $params['term'] ?? ''
];
$queryString = http_build_query(array_filter($utmParams));
return $url . (strpos($url, '?') ? '&' : '?') . $queryString;
}
// 点击统计报表
public function getAnalyticsReport($campaignId, $startDate, $endDate) {
$stmt = $this->db->prepare("
SELECT
DATE(clicked_at) as date,
COUNT(*) as clicks,
COUNT(DISTINCT ip_address) as unique_visitors,
COUNT(DISTINCT referer_url) as referers
FROM click_details cd
JOIN link_clicks lc ON cd.track_id = lc.track_id
WHERE lc.campaign_id = ?
AND cd.clicked_at BETWEEN ? AND ?
GROUP BY DATE(clicked_at)
ORDER BY date DESC
");
$stmt->execute([$campaignId, $startDate, $endDate]);
return $stmt->fetchAll();
}
// 反作弊检测
public function detectFraud($trackId) {
$stmt = $this->db->prepare("
SELECT
COUNT(*) as total_clicks,
COUNT(DISTINCT ip_address) as unique_ips,
GROUP_CONCAT(DISTINCT ip_address) as ips
FROM click_details
WHERE track_id = ?
AND clicked_at > DATE_SUB(NOW(), INTERVAL 1 HOUR)
");
$stmt->execute([$trackId]);
$data = $stmt->fetch();
// 异常检测规则
$fraudScore = 0;
// 同一IP短时间内多次点击
if ($data['total_clicks'] > 10 && $data['unique_ips'] == 1) {
$fraudScore += 50;
}
// 点击率异常高
if ($data['total_clicks'] > 100) {
$fraudScore += 30;
}
return [
'is_fraud' => $fraudScore > 60,
'fraud_score' => $fraudScore,
'details' => $data
];
}
}
// 使用示例
$tracker = new AdvancedLinkTracker($db);
// 生成带UTM参数的追踪链接
$utmLink = $tracker->generateUTMLink(
'https://example.com/product',
[
'source' => 'facebook',
'medium' => 'social',
'campaign' => 'summer_sale_2024'
]
);
$trackingLink = $tracker->generateTrackLink($utmLink, 'campaign_001');
?>
前端追踪代码
// JavaScript点击追踪
class ClickTracker {
constructor(trackingEndpoint) {
this.endpoint = trackingEndpoint;
}
trackClick(linkId, callbackUrl) {
const data = {
link_id: linkId,
timestamp: Date.now(),
screen_resolution: `${screen.width}x${screen.height}`,
language: navigator.language,
timezone: Intl.DateTimeFormat().resolvedOptions().timeZone
};
// 异步发送追踪请求
fetch(this.endpoint, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(data)
}).then(() => {
// 追踪完成后再跳转
window.location.href = callbackUrl;
}).catch(() => {
// 如果追踪失败,直接跳转
window.location.href = callbackUrl;
});
// 阻止默认跳转
return false;
}
}
// HTML使用示例
// <a href="#" onclick="tracker.trackClick('link123', 'https://example.com/target')">追踪链接</a>
推荐的PHP外链追踪工具
- YOURLS - 开源URL缩短器
- Polr - 现代URL缩短器
- Kint - PHP调试工具
- Matomo - PHP网站分析平台(含链接追踪)
这些工具和代码可以帮助你建立完整的外链追踪系统,实现点击统计、来源分析、UTM追踪等功能。