php实现站内公告
实现站内公告的PHP方法
数据库设计
创建公告表announcements,包含字段:id(主键)、title(标题)、content(内容)、created_at(发布时间)、is_active(是否激活)。
CREATE TABLE announcements (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
content TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
is_active BOOLEAN DEFAULT 1
);
后台管理功能
创建公告发布页面admin_post_announcement.php,包含表单提交处理逻辑。表单字段包括标题、内容、激活状态。
// 处理表单提交
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$title = $_POST['title'];
$content = $_POST['content'];
$is_active = isset($_POST['is_active']) ? 1 : 0;
$stmt = $pdo->prepare("INSERT INTO announcements (title, content, is_active) VALUES (?, ?, ?)");
$stmt->execute([$title, $content, $is_active]);
}
前端展示功能
在网站公共头部或侧边栏文件header.php中查询并显示最新公告。
// 查询激活的公告
$stmt = $pdo->query("SELECT * FROM announcements WHERE is_active = 1 ORDER BY created_at DESC LIMIT 5");
$announcements = $stmt->fetchAll(PDO::FETCH_ASSOC);
// 展示公告
foreach ($announcements as $announcement) {
echo '<div class="announcement">';
echo '<h4>' . htmlspecialchars($announcement['title']) . '</h4>';
echo '<p>' . nl2br(htmlspecialchars($announcement['content'])) . '</p>';
echo '<small>' . $announcement['created_at'] . '</small>';
echo '</div>';
}
样式优化 为公告添加CSS样式,增强可读性。
.announcement {
border: 1px solid #ddd;
padding: 15px;
margin-bottom: 10px;
border-radius: 5px;
background-color: #f9f9f9;
}
.announcement h4 {
margin-top: 0;
color: #333;
}
高级功能扩展
添加公告分类功能,扩展表结构增加category字段。实现公告分页显示,修改查询语句加入LIMIT和OFFSET参数。增加公告点击统计功能,添加views字段并在每次展示时更新。
// 更新浏览量
$stmt = $pdo->prepare("UPDATE announcements SET views = views + 1 WHERE id = ?");
$stmt->execute([$announcement['id']]);
安全注意事项
所有用户输入必须使用预处理语句防止SQL注入。输出内容时使用htmlspecialchars()防止XSS攻击。对后台管理页面添加权限验证,确保只有管理员可以发布公告。





