<?php
// 配置数据库连接
$host = 'localhost';
$db = 'ad_database';
$user = 'root';
$pass = 'password';
$dsn = "mysql:host=$host;dbname=$db;charset=utf8";
// 创建 PDO 实例
try {
$pdo = new PDO($dsn, $user, $pass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo '连接失败: ' . $e->getMessage();
exit;
}
// 用户信息(模拟获取)
$userId = 1; // 在实际应用中,这个值应该从用户登录信息中获取
$userLocation = 'New York'; // 在实际应用中,可以通过 IP 地址或其他方式获取用户位置
// 获取用户位置相关的广告
$adStmt = $pdo->prepare('
SELECT ads.id, ads.title, ads.url
FROM ads
INNER JOIN ad_locations ON ads.id = ad_locations.ad_id
WHERE ad_locations.location = :user_location
');
$adStmt->execute(['user_location' => $userLocation]);
$ads = $adStmt->fetchAll(PDO::FETCH_ASSOC);
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>广告展示与用户定位系统</title>
<style>
#ad-container {
width: 80%;
margin: auto;
text-align: center;
}
.ad-item {
margin: 20px 0;
}
.ad-item a {
text-decoration: none;
color: #007bff;
}
</style>
</head>
<body>
<h1>根据位置展示广告</h1>
<div id="ad-container">
<?php if ($ads): ?>
<?php foreach ($ads as $ad): ?>
<div class="ad-item">
<h2><?php echo htmlspecialchars($ad['title']); ?></h2>
<a href="<?php echo htmlspecialchars($ad['url']); ?>" target="_blank">查看广告</a>
</div>
<?php endforeach; ?>
<?php else: ?>
<p>没有找到适合您的广告。</p>
<?php endif; ?>
</div>
</body>
</html>
- 获取用户位置:在实际应用中,用户位置通常通过 IP 地址、用户账户信息或浏览器位置服务等方式获取。在示例中,位置被硬编码为
'New York'
。 - 查询相关广告:根据用户位置从
ad_locations
表中获取与用户位置匹配的广告。ad_locations
表应包含广告 ID 和位置的数据。 - 展示广告:将相关广告的标题和链接显示在网页上,用户可以点击查看具体的广告内容。