当前位置:首页 > PHP

php实现留言板功能

2026-01-13 12:55:40PHP

PHP 留言板功能实现

数据库设计 创建数据库表 messages,包含以下字段:

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

SQL 建表语句:

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

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

php实现留言板功能

<?php
$host = 'localhost';
$dbname = 'message_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());
}
?>

提交留言功能 创建 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 ($name && $email && $content) {
        $stmt = $pdo->prepare("INSERT INTO messages (name, email, content) VALUES (?, ?, ?)");
        $stmt->execute([$name, $email, $content]);
        header("Location: index.php");
        exit;
    }
}
?>

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

php实现留言板功能

<?php
require 'config.php';

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

<!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 foreach ($messages as $message): ?>
            <div class="message">
                <h3><?= htmlspecialchars($message['name']) ?></h3>
                <p><?= htmlspecialchars($message['content']) ?></p>
                <small><?= $message['created_at'] ?></small>
            </div>
        <?php endforeach; ?>
    </div>
</body>
</html>

安全增强措施

  • 对用户输入使用 htmlspecialchars() 防止 XSS 攻击
  • 使用 PDO 预处理语句防止 SQL 注入
  • 对邮箱字段使用 filter_var() 验证格式
  • 设置 PDO 错误模式为异常模式

数据验证 在客户端和服务器端都进行验证:

// 客户端验证示例
document.querySelector('form').addEventListener('submit', function(e) {
    if (!this.name.value || !this.email.value || !this.content.value) {
        e.preventDefault();
        alert('请填写所有字段');
    }
});

样式优化 添加基础 CSS 样式:

body {
    font-family: Arial, sans-serif;
    max-width: 800px;
    margin: 0 auto;
    padding: 20px;
}

form {
    margin-bottom: 30px;
    padding: 20px;
    background: #f5f5f5;
    border-radius: 5px;
}

input, textarea {
    display: block;
    width: 100%;
    margin-bottom: 10px;
    padding: 8px;
}

button {
    background: #4CAF50;
    color: white;
    border: none;
    padding: 10px 15px;
    cursor: pointer;
}

.message {
    border-bottom: 1px solid #ddd;
    padding: 15px 0;
}

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

相关文章

vue 实现筛选功能

vue 实现筛选功能

实现筛选功能的基本思路 在Vue中实现筛选功能通常涉及以下几个核心步骤:数据绑定、筛选逻辑处理、结果展示。以下是具体实现方法。 数据准备 准备需要筛选的数据源,通常是一个数组,可以存储在Vue组件的…

vue实现倒计时功能

vue实现倒计时功能

vue实现倒计时功能 在Vue中实现倒计时功能可以通过多种方式完成,以下是几种常见的方法: 方法一:使用setInterval和clearInterval 创建一个倒计时组件,利用setInter…

前端实现拖拽功能vue

前端实现拖拽功能vue

使用 HTML5 拖放 API 在 Vue 中可以通过 HTML5 的原生拖放 API 实现拖拽功能。需要监听 dragstart、dragover 和 drop 事件。 <template&…

vue实现名字查找功能

vue实现名字查找功能

实现名字查找功能 在Vue中实现名字查找功能,可以通过多种方式完成。以下是几种常见的实现方法: 使用v-model和computed属性 创建一个输入框,使用v-model绑定输入的值,通过comp…

vue实现功能插件

vue实现功能插件

Vue 功能插件实现方法 插件基本结构 Vue 插件通常需要暴露一个 install 方法,该方法接收 Vue 构造函数作为参数。基本结构如下: const MyPlugin = { insta…

vue实现注册功能

vue实现注册功能

前端实现注册功能 在Vue中实现注册功能通常需要结合表单验证、HTTP请求和状态管理。以下是一个基于Vue 3和Element Plus的完整实现方案: 模板部分 <template>…