当前位置:首页 > PHP

用php实现留言板

2026-01-28 23:52:49PHP

创建数据库表

留言板需要存储用户留言信息,创建一个MySQL数据库表:

CREATE TABLE messages (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100),
    content TEXT NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

数据库连接配置

创建config.php文件存放数据库连接信息:

<?php
define('DB_HOST', 'localhost');
define('DB_USER', 'username');
define('DB_PASS', 'password');
define('DB_NAME', 'message_board');
?>

留言提交处理

创建submit.php处理表单提交:

<?php
require 'config.php';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $username = htmlspecialchars(trim($_POST['username']));
    $email = filter_var(trim($_POST['email']), FILTER_SANITIZE_EMAIL);
    $content = htmlspecialchars(trim($_POST['content']));

    if (!empty($username) && !empty($content)) {
        $conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);

        $stmt = $conn->prepare("INSERT INTO messages (username, email, content) VALUES (?, ?, ?)");
        $stmt->bind_param("sss", $username, $email, $content);
        $stmt->execute();

        $stmt->close();
        $conn->close();

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

显示留言列表

创建index.php显示所有留言:

<?php
require 'config.php';

$conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
$result = $conn->query("SELECT * FROM messages ORDER BY created_at DESC");
$messages = $result->fetch_all(MYSQLI_ASSOC);
$conn->close();
?>

<!DOCTYPE html>
<html>
<head>
    <title>留言板</title>
</head>
<body>
    <h1>留言板</h1>

    <form action="submit.php" method="post">
        姓名: <input type="text" name="username" required><br>
        邮箱: <input type="email" name="email"><br>
        留言: <textarea name="content" required></textarea><br>
        <button type="submit">提交</button>
    </form>

    <hr>

    <?php foreach ($messages as $message): ?>
    <div class="message">
        <h3><?= htmlspecialchars($message['username']) ?></h3>
        <small><?= $message['created_at'] ?></small>
        <p><?= nl2br(htmlspecialchars($message['content'])) ?></p>
    </div>
    <hr>
    <?php endforeach; ?>
</body>
</html>

安全增强措施

添加CSRF防护和输入验证:

// 在config.php中添加
session_start();

// 在表单页生成token
$_SESSION['token'] = bin2hex(random_bytes(32));

// 在表单中添加隐藏域
<input type="hidden" name="token" value="<?= $_SESSION['token'] ?>">

// 在submit.php中验证token
if (!isset($_POST['token']) || $_POST['token'] !== $_SESSION['token']) {
    die('无效的CSRF令牌');
}

分页功能实现

修改index.php添加分页:

用php实现留言板

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

$conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
$total = $conn->query("SELECT COUNT(*) FROM messages")->fetch_row()[0];
$pages = ceil($total / $perPage);

$result = $conn->query("SELECT * FROM messages ORDER BY created_at DESC LIMIT $offset, $perPage");
$messages = $result->fetch_all(MYSQLI_ASSOC);
$conn->close();

// 在页面底部添加分页导航
<div class="pagination">
    <?php for ($i = 1; $i <= $pages; $i++): ?>
        <a href="?page=<?= $i ?>" <?= $i === $page ? 'class="active"' : '' ?>><?= $i ?></a>
    <?php endfor; ?>
</div>

标签: 留言板php
分享给朋友:

相关文章

git php实现

git php实现

Git 与 PHP 的集成实现 使用 PHP 执行 Git 命令 通过 PHP 的 exec()、shell_exec() 或 passthru() 函数可以直接调用 Git 命令,适用于服务器端操作…

php 登录实现

php 登录实现

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

php实现即时通讯

php实现即时通讯

PHP 实现即时通讯的方案 即时通讯(IM)可以通过多种方式实现,PHP 作为服务器端语言,通常需要结合前端技术(如 WebSocket、AJAX)或第三方服务来实现实时通信。以下是几种常见的实现方式…

php搜索功能实现的

php搜索功能实现的

PHP 搜索功能实现方法 数据库搜索实现 使用 SQL 的 LIKE 语句进行模糊匹配,适用于小型网站和简单搜索需求。 $searchTerm = $_GET['search']; $query =…

php mvc 实现

php mvc 实现

PHP MVC 实现方法 MVC(Model-View-Controller)是一种设计模式,用于分离应用程序的逻辑、数据和界面。以下是实现PHP MVC框架的关键步骤。 目录结构 创建以下目录结构…

无限分类实现 php

无限分类实现 php

无限分类的实现方法 无限分类通常用于构建多层级结构的数据,如商品分类、部门架构等。以下是几种常见的实现方式: 邻接列表模式(Adjacency List) 邻接列表是最简单的实现方式,通过在每个记录…