当前位置:首页 > PHP

php实现电子公告牌

2026-04-03 14:01:44PHP

实现电子公告牌的基本功能

使用PHP和MySQL可以快速搭建一个电子公告牌系统。以下是一个基础实现方案:

数据库设计

创建名为notice_board的数据库,包含一个notices表:

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

连接数据库

创建config.php文件处理数据库连接:

<?php
$host = 'localhost';
$dbname = 'notice_board';
$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("数据库连接失败: " . $e->getMessage());
}
?>

发布公告功能

创建create.php处理公告发布:

<?php
require 'config.php';

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

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

    header("Location: index.php");
    exit;
}
?>

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

显示公告列表

创建index.php显示所有公告:

<?php
require 'config.php';

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

<h1>电子公告牌</h1>
<a href="create.php">发布新公告</a>

<?php foreach ($notices as $notice): ?>
    <div class="notice">
        <h2><?= htmlspecialchars($notice['title']) ?></h2>
        <p><?= nl2br(htmlspecialchars($notice['content'])) ?></p>
        <small>发布时间: <?= $notice['created_at'] ?></small>
    </div>
<?php endforeach; ?>

安全增强措施

为防止XSS攻击,所有输出内容都应使用htmlspecialchars()过滤:

$title = htmlspecialchars($_POST['title'], ENT_QUOTES, 'UTF-8');

使用预处理语句防止SQL注入:

$stmt = $pdo->prepare("INSERT INTO notices (title, content) VALUES (:title, :content)");
$stmt->bindParam(':title', $title);
$stmt->bindParam(':content', $content);
$stmt->execute();

扩展功能建议

添加用户认证系统限制发布权限:

session_start();
if (!isset($_SESSION['user_id'])) {
    header("Location: login.php");
    exit;
}

实现公告编辑和删除功能:

// 删除公告
$stmt = $pdo->prepare("DELETE FROM notices WHERE id = ?");
$stmt->execute([$id]);

// 更新公告
$stmt = $pdo->prepare("UPDATE notices SET title = ?, content = ? WHERE id = ?");
$stmt->execute([$title, $content, $id]);

添加分页功能提升性能:

php实现电子公告牌

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

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

这个基础实现可以根据需求进一步扩展,如添加分类标签、评论功能或附件上传等。

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

相关文章

php实现栈

php实现栈

栈的基本概念 栈(Stack)是一种遵循后进先出(LIFO)原则的数据结构。核心操作包括: push:元素入栈。 pop:元素出栈(返回并移除栈顶元素)。 peek:查看栈顶元素(不移除…

php实现mysql

php实现mysql

PHP 连接 MySQL 的基本方法 PHP 提供了多种方式与 MySQL 数据库进行交互,以下是最常用的几种方法。 使用 MySQLi 扩展 MySQLi 是 MySQL 的改进扩展,支持面向对…

php队列的实现

php队列的实现

PHP队列的实现方式 PHP中实现队列功能可以通过多种方式,根据需求选择适合的方案: 使用数组实现基础队列 PHP数组本身支持队列操作,利用array_push和array_shift函数: $q…

php实现推送

php实现推送

PHP 实现推送功能的方法 PHP 实现推送功能可以通过多种方式完成,包括 WebSocket、Server-Sent Events (SSE)、长轮询或第三方推送服务。以下是几种常见的方法: 使用…

php实现秒杀

php实现秒杀

PHP实现秒杀功能的关键技术 秒杀系统需要解决高并发、数据一致性、系统稳定性等问题。以下是PHP实现秒杀功能的核心技术方案: 数据库优化 使用InnoDB引擎的行级锁和事务特性,确保数据一致性。商品…

php rsa 实现

php rsa 实现

PHP RSA 加密与解密实现 生成密钥对 使用 openssl_pkey_new 生成 RSA 密钥对,并通过 openssl_pkey_export 导出私钥。公钥可从密钥对中提取。 $conf…