当前位置:首页 > PHP

php实现电子公告牌

2026-02-28 05:00:06PHP

使用PHP实现电子公告牌

电子公告牌(BBS)是一种常见的网络应用,允许用户发布、查看和管理公告。以下是使用PHP实现电子公告牌的基本步骤。

数据库设计

创建一个数据库表来存储公告信息。表结构可以包含以下字段:

  • id:公告的唯一标识符(主键,自增)。
  • title:公告标题。
  • content:公告内容。
  • author:发布者名称。
  • created_at:发布时间(时间戳)。
  • updated_at:更新时间(时间戳)。

SQL语句示例:

CREATE TABLE announcements (
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(255) NOT NULL,
    content TEXT NOT NULL,
    author VARCHAR(100) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

连接数据库

使用PHP连接MySQL数据库,确保在代码中正确处理数据库连接和错误。

php实现电子公告牌

<?php
$host = 'localhost';
$dbname = 'bbs_db';
$username = 'root';
$password = '';

try {
    $pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    die("Database connection failed: " . $e->getMessage());
}
?>

发布公告功能

创建一个表单,允许用户输入公告标题和内容,提交后将数据插入数据库。

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $title = $_POST['title'];
    $content = $_POST['content'];
    $author = $_POST['author'];

    $stmt = $pdo->prepare("INSERT INTO announcements (title, content, author) VALUES (?, ?, ?)");
    $stmt->execute([$title, $content, $author]);
}
?>

<form method="POST" action="">
    <input type="text" name="title" placeholder="公告标题" required>
    <textarea name="content" placeholder="公告内容" required></textarea>
    <input type="text" name="author" placeholder="发布者" required>
    <button type="submit">发布公告</button>
</form>

显示公告列表

从数据库中查询公告列表并按时间倒序显示。

php实现电子公告牌

<?php
$stmt = $pdo->query("SELECT * FROM announcements ORDER BY created_at DESC");
$announcements = $stmt->fetchAll(PDO::FETCH_ASSOC);

foreach ($announcements as $announcement) {
    echo "<div>";
    echo "<h3>{$announcement['title']}</h3>";
    echo "<p>{$announcement['content']}</p>";
    echo "<small>发布者: {$announcement['author']} | 发布时间: {$announcement['created_at']}</small>";
    echo "</div><hr>";
}
?>

删除公告功能

为管理员或发布者提供删除公告的功能。

<?php
if (isset($_GET['delete_id'])) {
    $id = $_GET['delete_id'];
    $stmt = $pdo->prepare("DELETE FROM announcements WHERE id = ?");
    $stmt->execute([$id]);
}

foreach ($announcements as $announcement) {
    echo "<div>";
    echo "<h3>{$announcement['title']}</h3>";
    echo "<p>{$announcement['content']}</p>";
    echo "<small>发布者: {$announcement['author']} | 发布时间: {$announcement['created_at']}</small>";
    echo "<a href='?delete_id={$announcement['id']}' onclick='return confirm(\"确定删除吗?\")'>删除</a>";
    echo "</div><hr>";
}
?>

分页功能

当公告数量较多时,实现分页功能以提升用户体验。

<?php
$perPage = 5;
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$offset = ($page - 1) * $perPage;

$stmt = $pdo->prepare("SELECT * FROM announcements ORDER BY created_at DESC LIMIT :offset, :perPage");
$stmt->bindParam(':offset', $offset, PDO::PARAM_INT);
$stmt->bindParam(':perPage', $perPage, PDO::PARAM_INT);
$stmt->execute();
$announcements = $stmt->fetchAll(PDO::FETCH_ASSOC);

$totalStmt = $pdo->query("SELECT COUNT(*) FROM announcements");
$total = $totalStmt->fetchColumn();
$totalPages = ceil($total / $perPage);

foreach ($announcements as $announcement) {
    echo "<div>";
    echo "<h3>{$announcement['title']}</h3>";
    echo "<p>{$announcement['content']}</p>";
    echo "<small>发布者: {$announcement['author']} | 发布时间: {$announcement['created_at']}</small>";
    echo "</div><hr>";
}

for ($i = 1; $i <= $totalPages; $i++) {
    echo "<a href='?page=$i'>$i</a> ";
}
?>

安全措施

确保输入数据经过验证和过滤,防止SQL注入和XSS攻击。

<?php
function sanitizeInput($data) {
    return htmlspecialchars(strip_tags(trim($data)));
}

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $title = sanitizeInput($_POST['title']);
    $content = sanitizeInput($_POST['content']);
    $author = sanitizeInput($_POST['author']);

    $stmt = $pdo->prepare("INSERT INTO announcements (title, content, author) VALUES (?, ?, ?)");
    $stmt->execute([$title, $content, $author]);
}
?>

通过以上步骤,可以实现一个基本的电子公告牌系统。根据需求可以进一步扩展功能,如用户认证、评论功能等。

标签: 电子公告php
分享给朋友:

相关文章

php 实现验证码

php 实现验证码

使用 PHP 生成验证码 验证码(CAPTCHA)用于防止自动化脚本提交表单,以下是几种常见的 PHP 实现方法。 使用 GD 库生成图片验证码 GD 库是 PHP 的图像处理扩展,可用于生成验证码…

php数组实现

php数组实现

PHP 数组的基本实现 PHP 数组是一种非常灵活的数据结构,可以存储多个值,并且支持多种类型的键(整数或字符串)。PHP 数组实际上是有序映射(ordered map),可以看作是列表(vector…

php 实现无限分类

php 实现无限分类

无限分类的实现方法 无限分类通常用于构建多层级结构的数据,如商品分类、菜单管理等。以下是几种常见的实现方式: 邻接列表模型(Adjacency List) 这是最简单的实现方式,每个分类记录存储其父…

php实现过程

php实现过程

PHP 实现过程 PHP 是一种广泛使用的服务器端脚本语言,特别适合 Web 开发。以下是 PHP 实现过程的关键步骤和注意事项。 安装与配置 下载并安装 PHP,可以从官方 PHP 网站获取最新版…

php 实现评论

php 实现评论

实现 PHP 评论功能 数据库设计 创建数据库表存储评论数据,通常包含以下字段: id:评论唯一标识 user_id:用户ID content:评论内容 created_at:评论时间 parent…

php数据库实现

php数据库实现

PHP 连接 MySQL 数据库 使用 mysqli 扩展连接 MySQL 数据库: <?php $servername = "localhost"; $username = "usernam…