广告展示统计系统PHP代码

<?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;
}

// 处理广告展示
if (isset($_GET['ad_id'])) {
    $adId = (int)$_GET['ad_id'];
    
    // 记录广告展示事件
    $displayStmt = $pdo->prepare('
        INSERT INTO ad_displays (ad_id, displayed_at) 
        VALUES (:ad_id, NOW())
    ');
    $displayStmt->execute(['ad_id' => $adId]);
    
    // 获取广告信息
    $adStmt = $pdo->prepare('
        SELECT title, url 
        FROM ads 
        WHERE id = :ad_id
    ');
    $adStmt->execute(['ad_id' => $adId]);
    $ad = $adStmt->fetch(PDO::FETCH_ASSOC);

    if ($ad) {
        // 返回广告信息
        header('Content-Type: application/json');
        echo json_encode([
            'title' => $ad['title'],
            'url' => $ad['url']
        ]);
        exit;
    } else {
        echo json_encode(['error' => '广告不存在。']);
    }
} else {
    echo json_encode(['error' => '无效的广告 ID。']);
}
?>

  • 记录广告展示事件:当广告被展示时,系统通过 ad_id 参数记录广告的展示信息。展示事件会被插入到 ad_displays 表中,包括广告 ID 和展示时间 (displayed_at)。

  • 返回广告信息:根据 ad_idads 表中检索广告的标题和目标 URL,然后以 JSON 格式返回广告的信息。这使得前端应用程序可以动态地显示广告内容。

  • 安全性和验证:代码中使用了参数化查询来防止 SQL 注入攻击,并且只有在存在有效广告 ID 时才会返回广告信息。

数据库表结构:

  1. ads:存储广告信息

    • id (INT, 主键)
    • title (VARCHAR)
    • url (VARCHAR)
  2. ad_displays:记录广告展示信息

    • id (INT, 主键)
    • ad_id (INT, 外键,指向 ads 表)
    • displayed_at (DATETIME)
  • 14
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值