当前位置:首页 > PHP

留言板实现php

2026-02-14 01:59:44PHP

留言板实现(PHP)

以下是一个简单的PHP留言板实现方案,包含前端表单和后端数据处理。

数据库设计

创建一个MySQL数据库表存储留言信息:

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

前端表单页面(index.php)

<!DOCTYPE html>
<html>
<head>
    <title>简易留言板</title>
    <style>
        .message-board { width: 600px; margin: 0 auto; }
        .message { border: 1px solid #ddd; padding: 10px; margin-bottom: 10px; }
    </style>
</head>
<body>
    <div class="message-board">
        <h1>留言板</h1>
        <form method="post" action="post.php">
            <div><input type="text" name="name" placeholder="您的姓名" required></div>
            <div><input type="email" name="email" placeholder="您的邮箱"></div>
            <div><textarea name="content" placeholder="留言内容" required></textarea></div>
            <button type="submit">提交留言</button>
        </form>

        <h2>留言列表</h2>
        <?php
        require 'db.php';
        $sql = "SELECT * FROM messages ORDER BY created_at DESC";
        $result = $conn->query($sql);

        if ($result->num_rows > 0) {
            while($row = $result->fetch_assoc()) {
                echo '<div class="message">';
                echo '<h3>'.$row["name"].'</h3>';
                if(!empty($row["email"])) {
                    echo '<p>邮箱: '.$row["email"].'</p>';
                }
                echo '<p>'.$row["content"].'</p>';
                echo '<small>'.date('Y-m-d H:i', strtotime($row["created_at"])).'</small>';
                echo '</div>';
            }
        } else {
            echo "<p>暂无留言</p>";
        }
        $conn->close();
        ?>
    </div>
</body>
</html>

数据库连接文件(db.php)

<?php
$servername = "localhost";
$username = "数据库用户名";
$password = "数据库密码";
$dbname = "数据库名";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}
?>

留言处理脚本(post.php)

<?php
require 'db.php';

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

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

    if ($stmt->execute()) {
        header("Location: index.php");
    } else {
        echo "错误: " . $sql . "<br>" . $conn->error;
    }

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

安全增强措施

XSS防护:使用htmlspecialchars()函数转义用户输入

$name = htmlspecialchars($_POST['name']);

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

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

功能扩展建议

增加分页功能

$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$limit = 10;
$offset = ($page - 1) * $limit;
$sql = "SELECT * FROM messages ORDER BY created_at DESC LIMIT $limit OFFSET $offset";

添加管理员回复功能

留言板实现php

ALTER TABLE messages ADD COLUMN reply TEXT;
ALTER TABLE messages ADD COLUMN replied_at TIMESTAMP;

这个实现包含了留言板的基本功能:留言提交、留言显示和简单的安全防护。根据实际需求可以进一步扩展功能,如用户注册登录、留言审核、富文本编辑等。

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

相关文章

php 实现购物车

php 实现购物车

PHP 实现购物车功能 购物车功能是电子商务网站的核心部分,可以通过 PHP 和 Session 或数据库来实现。以下是两种常见的实现方式: 使用 Session 存储购物车数据 Session 是…

php实现的分页

php实现的分页

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

php实现评论功能

php实现评论功能

数据库设计 创建评论表(示例结构): CREATE TABLE `comments` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id`…

排序算法 php实现

排序算法 php实现

以下是用PHP实现的常见排序算法,每种算法均附示例代码和简要说明: 冒泡排序 通过重复比较相邻元素并交换位置实现排序: function bubbleSort($arr) { $n…

php实现下载功能

php实现下载功能

PHP实现文件下载功能 使用PHP实现文件下载功能可以通过设置HTTP头信息控制浏览器行为,以下是几种常见实现方式: 基础下载方法 $file_path = '/path/to/file.pdf';…

php树形菜单的实现

php树形菜单的实现

PHP树形菜单的实现方法 实现树形菜单通常涉及数据库设计、数据查询和前端展示三个部分。以下是几种常见的实现方式: 邻接列表模型(Adjacency List) 这是最简单的树形结构存储方式,每个节点…