当前位置:首页 > PHP

php实现简单留言板

2026-02-14 04:33:08PHP

创建数据库表

留言板需要一个数据库表存储留言信息,通常包含字段如id、用户名、留言内容、留言时间等。以下为MySQL创建表的SQL语句:

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

连接数据库

使用PDO连接MySQL数据库,确保在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());
}

提交留言功能

创建一个HTML表单用于提交留言,后端处理表单数据并存入数据库:

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

    $stmt = $pdo->prepare("INSERT INTO messages (username, content) VALUES (?, ?)");
    $stmt->execute([$username, $content]);
}

显示留言列表

从数据库中查询留言并按时间倒序显示:

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

foreach ($messages as $message) {
    echo "<div class='message'>";
    echo "<h3>" . htmlspecialchars($message['username']) . "</h3>";
    echo "<p>" . nl2br(htmlspecialchars($message['content'])) . "</p>";
    echo "<small>" . $message['created_at'] . "</small>";
    echo "</div>";
}

前端界面

简单的HTML表单和CSS样式可以提升用户体验:

<form method="post" action="">
    <input type="text" name="username" placeholder="您的名字" required>
    <textarea name="content" placeholder="留言内容" required></textarea>
    <button type="submit">提交留言</button>
</form>

<style>
    .message {
        border: 1px solid #ddd;
        padding: 10px;
        margin-bottom: 10px;
    }
    textarea {
        width: 100%;
        height: 100px;
    }
</style>

安全增强

对输入数据进行过滤和转义,防止XSS攻击。使用预处理语句防止SQL注入。可以添加验证码防止垃圾留言。

// 示例:简单的长度验证
if (strlen($content) > 500) {
    die("留言内容过长");
}

分页功能

当留言数量较多时,添加分页功能:

php实现简单留言板

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

$stmt = $pdo->prepare("SELECT * FROM messages ORDER BY created_at DESC LIMIT ? OFFSET ?");
$stmt->bindValue(1, $perPage, PDO::PARAM_INT);
$stmt->bindValue(2, $offset, PDO::PARAM_INT);
$stmt->execute();

标签: 留言板简单
分享给朋友:

相关文章

vue实现简单对话

vue实现简单对话

Vue实现简单对话功能 数据绑定与列表渲染 使用Vue的v-for指令渲染对话列表,结合v-model实现输入框双向绑定: <template> <div> &l…

vue底部导航简单实现

vue底部导航简单实现

使用 Vue Router 实现底部导航 在 Vue 项目中,可以通过 Vue Router 和自定义组件实现底部导航。以下是一个简单的实现示例: 安装 Vue Router(如果尚未安装):…

vue简单的列表实现

vue简单的列表实现

实现简单的 Vue 列表 在 Vue 中实现列表功能通常使用 v-for 指令。以下是一个基础的列表实现示例: <template> <div> <ul&g…

react简单实现树形控件

react简单实现树形控件

实现树形控件的基本思路 树形控件的核心是递归渲染节点,每个节点可以包含子节点。通过状态管理展开/折叠状态,动态渲染可见部分。 基础代码结构 创建一个可复用的树形组件,包含以下关键部分: impor…

react实现简单拖拽功能

react实现简单拖拽功能

实现拖拽功能的核心步骤 使用React实现拖拽功能主要依赖HTML5的Drag and Drop API,结合React的状态管理。以下是核心实现方法: 设置可拖拽元素 为需要拖拽的元素添加drag…

用php实现留言板

用php实现留言板

创建数据库表 留言板需要存储用户留言信息,创建一个MySQL数据库表: CREATE TABLE messages ( id INT AUTO_INCREMENT PRIMARY KEY,…