当前位置:首页 > PHP

php实现留言板功能

2026-02-27 10:58:05PHP

创建数据库表结构

留言板功能通常需要一个数据库表来存储留言信息。可以使用以下SQL语句创建一个简单的留言表:

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
);

数据库连接配置

创建一个配置文件config.php来存储数据库连接信息:

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

留言表单页面

创建一个HTML表单页面index.php用于用户提交留言:

<?php require_once 'config.php'; ?>
<!DOCTYPE html>
<html>
<head>
    <title>留言板</title>
</head>
<body>
    <h1>留言板</h1>
    <form method="post" action="submit.php">
        <div>
            <label for="name">姓名:</label>
            <input type="text" id="name" name="name" required>
        </div>
        <div>
            <label for="email">邮箱:</label>
            <input type="email" id="email" name="email">
        </div>
        <div>
            <label for="content">留言内容:</label>
            <textarea id="content" name="content" required></textarea>
        </div>
        <button type="submit">提交留言</button>
    </form>
</body>
</html>

处理留言提交

创建submit.php文件处理表单提交并将数据存入数据库:

<?php
require_once 'config.php';

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

    try {
        $conn = new PDO("mysql:host=".DB_HOST.";dbname=".DB_NAME, DB_USER, DB_PASSWORD);
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

        $stmt = $conn->prepare("INSERT INTO messages (name, email, content) VALUES (:name, :email, :content)");
        $stmt->bindParam(':name', $name);
        $stmt->bindParam(':email', $email);
        $stmt->bindParam(':content', $content);
        $stmt->execute();

        header("Location: view.php");
        exit();
    } catch(PDOException $e) {
        echo "错误: " . $e->getMessage();
    }
}
?>

显示留言列表

创建view.php文件显示所有留言:

<?php
require_once 'config.php';

try {
    $conn = new PDO("mysql:host=".DB_HOST.";dbname=".DB_NAME, DB_USER, DB_PASSWORD);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $stmt = $conn->query("SELECT * FROM messages ORDER BY created_at DESC");
    $messages = $stmt->fetchAll(PDO::FETCH_ASSOC);
} catch(PDOException $e) {
    echo "错误: " . $e->getMessage();
}
?>

<!DOCTYPE html>
<html>
<head>
    <title>留言列表</title>
</head>
<body>
    <h1>留言列表</h1>
    <a href="index.php">添加新留言</a>

    <?php foreach ($messages as $message): ?>
    <div style="margin-bottom: 20px; padding: 10px; border: 1px solid #ccc;">
        <h3><?php echo $message['name']; ?></h3>
        <p><?php echo nl2br($message['content']); ?></p>
        <small><?php echo $message['created_at']; ?></small>
    </div>
    <?php endforeach; ?>
</body>
</html>

安全增强措施

为增强安全性,可以添加以下措施:

// 在config.php中添加CSRF防护
session_start();
function generate_csrf_token() {
    if (empty($_SESSION['csrf_token'])) {
        $_SESSION['csrf_token'] = bin2hex(random_bytes(32));
    }
    return $_SESSION['csrf_token'];
}

// 在表单中添加CSRF令牌
<input type="hidden" name="csrf_token" value="<?php echo generate_csrf_token(); ?>">

// 在submit.php中验证CSRF令牌
if (!isset($_POST['csrf_token']) || $_POST['csrf_token'] !== $_SESSION['csrf_token']) {
    die("CSRF令牌验证失败");
}

数据验证和过滤

对用户输入进行更严格的验证:

php实现留言板功能

// 验证姓名
if (!preg_match("/^[a-zA-Z0-9_\x{4e00}-\x{9fa5}]+$/u", $name)) {
    die("姓名只能包含中文、英文、数字和下划线");
}

// 验证邮箱
if (!empty($email) && !filter_var($email, FILTER_VALIDATE_EMAIL)) {
    die("邮箱格式不正确");
}

// 限制内容长度
if (mb_strlen($content, 'UTF-8') > 1000) {
    die("留言内容不能超过1000个字符");
}

这些代码提供了一个完整的PHP留言板实现,包括数据库连接、表单提交、数据显示和基本安全措施。可以根据实际需求进一步扩展功能,如分页显示、管理员回复、留言审核等。

标签: 留言板功能
分享给朋友:

相关文章

vue实现功能插件

vue实现功能插件

Vue 插件实现方法 Vue 插件通常用于封装全局功能(如指令、过滤器、混入等),以下是实现 Vue 插件的典型方式: 插件基本结构 const MyPlugin = { install(Vu…

vue实现注册功能

vue实现注册功能

实现注册功能的基本步骤 在Vue中实现注册功能通常需要结合前端表单和后端API交互。以下是常见的实现方式: 创建注册表单组件 <template> <div class="re…

vue图片实现功能

vue图片实现功能

图片上传功能实现 使用 <input type="file"> 结合 Vue 的 v-on:change 事件监听文件选择 <template> <input ty…

vue实现置顶功能

vue实现置顶功能

实现置顶功能的基本思路 在Vue中实现置顶功能通常涉及对数据列表的操作,通过调整数组元素的顺序或添加标识属性来实现。以下是几种常见方法: 方法一:通过数组排序实现 利用数组的sort方法,根据元素的…

vue拖拽功能实现

vue拖拽功能实现

Vue 拖拽功能实现方法 使用 HTML5 原生拖拽 API HTML5 提供了原生的拖拽 API,通过 draggable 属性和相关事件实现基础拖拽功能。 <template>…

vue实现小功能

vue实现小功能

Vue.js 是一个渐进式 JavaScript 框架,适合实现各种小型功能。以下是几个常见小功能的实现方法: 计数器功能 通过 Vue 的响应式数据绑定实现简单的计数器: <tem…