当前位置:首页 > 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实现树结构的方法 在PHP中实现树结构通常可以通过递归或迭代的方式完成。以下是几种常见的实现方法: 递归实现树结构 递归是处理树结构的自然方式,尤其适用于具有未知深度的树。 class Tr…

php购物车实现

php购物车实现

PHP购物车实现方法 使用PHP实现购物车功能可以通过多种方式完成,以下是几种常见的实现方法: Session存储购物车数据 利用PHP的$_SESSION超全局变量存储购物车数据是最简单的方法。…

php 登录实现

php 登录实现

PHP 登录实现 PHP 登录功能通常包括用户认证、会话管理和安全性措施。以下是实现 PHP 登录功能的关键步骤。 数据库准备 创建一个用户表存储用户信息,通常包括用户名、密码(加密存储)和其他必…

php实现的分页

php实现的分页

PHP 实现分页的方法 基本分页逻辑 分页的核心在于计算总页数、当前页码以及数据偏移量。假设每页显示 10 条数据: $current_page = isset($_GET['page']) ?…

php无限分类的实现

php无限分类的实现

PHP无限分类的实现 无限分类是一种常见的树形结构数据组织方式,适用于商品分类、菜单管理、地区选择等场景。以下是几种实现方法: 递归实现法 递归是最直观的实现方式,通过函数自身调用来遍历子分类。数据…

php怎么实现登录功能

php怎么实现登录功能

数据库准备 创建用户表存储登录信息,通常包括用户名、密码(需加密)等字段。示例SQL: CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY…