当前位置:首页 > PHP

php如何实现留言

2026-02-15 14:46:03PHP

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

创建留言表单

HTML表单用于收集用户输入:

<form action="submit.php" method="post">
    <label for="name">姓名:</label>
    <input type="text" id="name" name="name" required>

    <label for="email">邮箱:</label>
    <input type="email" id="email" name="email">

    <label for="content">留言内容:</label>
    <textarea id="content" name="content" required></textarea>

    <button type="submit">提交留言</button>
</form>

处理表单提交

创建submit.php处理表单数据并存入数据库:

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

    $conn = new mysqli('localhost', 'username', 'password', 'database');

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

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

    if ($stmt->execute()) {
        header("Location: messages.php");
    } else {
        echo "留言提交失败";
    }

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

显示留言列表

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

<?php
$conn = new mysqli('localhost', 'username', 'password', 'database');

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

$result = $conn->query("SELECT * FROM messages ORDER BY created_at DESC");

if ($result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {
        echo "<div class='message'>";
        echo "<h3>" . htmlspecialchars($row['name']) . "</h3>";
        if (!empty($row['email'])) {
            echo "<p>邮箱:" . htmlspecialchars($row['email']) . "</p>";
        }
        echo "<p>" . htmlspecialchars($row['content']) . "</p>";
        echo "<small>" . $row['created_at'] . "</small>";
        echo "</div>";
    }
} else {
    echo "暂无留言";
}

$conn->close();
?>

安全注意事项

对用户输入进行验证和过滤,防止SQL注入和XSS攻击:

$name = filter_input(INPUT_POST, 'name', FILTER_SANITIZE_STRING);
$email = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL);
$content = filter_input(INPUT_POST, 'content', FILTER_SANITIZE_STRING);

使用预处理语句防止SQL注入,如上面示例中的prepare和bind_param方法。

扩展功能

可以添加分页功能显示留言:

php如何实现留言

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

$result = $conn->query("SELECT * FROM messages ORDER BY created_at DESC LIMIT $limit OFFSET $offset");

添加管理员回复功能,可以在数据库中添加reply字段,并创建管理员界面进行回复。

分享给朋友:

相关文章

vue如何实现mvvm

vue如何实现mvvm

Vue 实现 MVVM 的核心机制 Vue 的 MVVM(Model-View-ViewModel)实现依赖于数据绑定和响应式系统,通过以下核心机制完成: 数据劫持(响应式系统) Vue 使用 Ob…

php如何实现直播

php如何实现直播

实现直播功能的方法 PHP可以通过结合其他技术和工具来实现直播功能。以下是几种常见的方法: 使用流媒体服务器 配置流媒体服务器如Nginx-RTMP、Red5或Wowza。这些服务器支持RTMP协…

js双击事件如何实现

js双击事件如何实现

实现双击事件的方法 在JavaScript中,可以通过监听dblclick事件或手动检测两次点击的时间间隔来实现双击事件。以下是几种常见的方法: 使用原生dblclick事件 element…

vue如何实现重新实现主题

vue如何实现重新实现主题

Vue 主题切换的实现方法 使用 CSS 变量动态切换主题 定义主题相关的 CSS 变量,通过修改这些变量实现主题切换。在根元素(如 :root)中定义默认主题的变量,在特定类名下定义其他主题的变量。…

vue如何实现tap

vue如何实现tap

Vue 中实现类似移动端 tap 事件的方法 在 Vue 中可以通过以下几种方式实现类似移动端 tap(轻触)事件的效果: 使用第三方库 安装 v-tap 指令库可以快速实现 tap 事件: np…

vue如何实现控制

vue如何实现控制

Vue 实现控制的方法 Vue 提供了多种方式来实现对应用的控制,包括数据绑定、条件渲染、循环渲染、事件处理等。以下是几种常见的控制方法: 数据绑定 通过 v-model 指令实现双向数据绑定,可以…