当前位置:首页 > PHP

用php实现留言板

2026-02-27 20:54:14PHP

数据库设计

创建名为messages的数据库表,包含以下字段:

  • id:主键,自增
  • name:留言者姓名,VARCHAR(50)
  • email:留言者邮箱,VARCHAR(100)
  • content:留言内容,TEXT
  • created_at:留言时间,TIMESTAMP

SQL创建语句示例:

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

数据库连接

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

用php实现留言板

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

$conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
?>

提交留言功能

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

<?php
require 'config.php';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $name = htmlspecialchars($_POST['name']);
    $email = filter_var($_POST['email'], FILTER_VALIDATE_EMAIL);
    $content = htmlspecialchars($_POST['content']);

    if ($email === false) {
        die("Invalid email format");
    }

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

    if ($stmt->execute()) {
        header("Location: index.php");
    } else {
        echo "Error: " . $stmt->error;
    }
}
?>

显示留言功能

index.php中显示所有留言:

用php实现留言板

<?php
require 'config.php';

$result = $conn->query("SELECT * FROM messages ORDER BY created_at DESC");
?>
<!DOCTYPE html>
<html>
<head>
    <title>留言板</title>
</head>
<body>
    <h1>留言板</h1>
    <form action="submit.php" method="post">
        <input type="text" name="name" placeholder="姓名" required>
        <input type="email" name="email" placeholder="邮箱" required>
        <textarea name="content" placeholder="留言内容" required></textarea>
        <button type="submit">提交</button>
    </form>

    <div class="messages">
        <?php while($row = $result->fetch_assoc()): ?>
        <div class="message">
            <h3><?php echo htmlspecialchars($row['name']); ?></h3>
            <small><?php echo htmlspecialchars($row['email']); ?> - <?php echo $row['created_at']; ?></small>
            <p><?php echo htmlspecialchars($row['content']); ?></p>
        </div>
        <?php endwhile; ?>
    </div>
</body>
</html>

安全增强

添加CSRF防护和XSS防护:

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

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

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

// 在submit.php中验证token
if (!isset($_POST['token']) || $_POST['token'] !== $_SESSION['token']) {
    die("Invalid CSRF token");
}

分页功能

实现留言分页显示:

// 获取当前页码
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$perPage = 5;
$offset = ($page - 1) * $perPage;

// 查询分页数据
$result = $conn->query("SELECT * FROM messages ORDER BY created_at DESC LIMIT $offset, $perPage");

// 计算总页数
$total = $conn->query("SELECT COUNT(*) FROM messages")->fetch_row()[0];
$totalPages = ceil($total / $perPage);

// 显示分页导航
for ($i = 1; $i <= $totalPages; $i++) {
    echo "<a href='?page=$i'>$i</a> ";
}

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

相关文章

php实现文件上传

php实现文件上传

PHP 文件上传实现方法 在 PHP 中实现文件上传需要处理 HTML 表单和服务器端脚本。以下是详细步骤: 创建 HTML 表单 使用 enctype="multipart/form-data"…

php实现搜索功能

php实现搜索功能

实现基本的搜索功能 在PHP中实现搜索功能通常涉及数据库查询。以下是一个简单的实现方式,假设使用MySQL数据库: <?php // 连接数据库 $conn = new mysqli('lo…

php实现增删改查

php实现增删改查

以下是在PHP中实现增删改查(CRUD)操作的详细方法,以MySQL数据库为例: 数据库连接配置 创建config.php文件存储数据库连接信息: <?php $host = 'localh…

php实现登录

php实现登录

PHP 登录功能实现 数据库连接与用户表创建 创建一个数据库连接文件 db.php,用于管理数据库连接。MySQL 示例代码如下: <?php $host = 'localhost'; $db…

php 实现登录

php 实现登录

PHP 登录功能实现 使用 PHP 实现登录功能通常需要结合数据库验证和会话管理。以下是一个基本的登录实现流程: 数据库准备 创建用户表存储用户名和密码(建议使用哈希加密): CREATE TAB…

php实现聊天

php实现聊天

实现 PHP 聊天功能的方法 使用 WebSocket 和 PHP 实现实时聊天 WebSocket 是一种全双工通信协议,适合实现实时聊天功能。PHP 可以通过 Ratchet 库实现 WebS…