当前位置:首页 > PHP

php实现表白墙

2026-01-30 08:28:56PHP

实现表白墙的PHP方案

使用PHP结合MySQL数据库可以快速搭建一个简单的表白墙功能。以下为具体实现方法:

数据库设计

创建名为love_wall的数据库,包含一张messages表:

CREATE TABLE `messages` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `sender` varchar(50) NOT NULL,
  `receiver` varchar(50) NOT NULL,
  `content` text NOT NULL,
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

核心功能实现

创建index.php作为主页面:

<?php
$db = new PDO('mysql:host=localhost;dbname=love_wall', 'username', 'password');

// 处理表单提交
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $stmt = $db->prepare("INSERT INTO messages (sender, receiver, content) VALUES (?, ?, ?)");
    $stmt->execute([
        htmlspecialchars($_POST['sender']),
        htmlspecialchars($_POST['receiver']),
        htmlspecialchars($_POST['content'])
    ]);
    header("Location: ".$_SERVER['PHP_SELF']);
    exit;
}

// 获取所有留言
$messages = $db->query("SELECT * FROM messages ORDER BY created_at DESC")->fetchAll();
?>
<!DOCTYPE html>
<html>
<head>
    <title>校园表白墙</title>
    <style>
        .message { border: 1px solid #eee; padding: 15px; margin-bottom: 10px; }
    </style>
</head>
<body>
    <h1>表白墙</h1>

    <form method="post">
        你的昵称: <input type="text" name="sender" required><br>
        想对谁表白: <input type="text" name="receiver" required><br>
        表白内容: <textarea name="content" required></textarea><br>
        <button type="submit">提交</button>
    </form>

    <div class="messages">
        <?php foreach ($messages as $msg): ?>
        <div class="message">
            <strong><?= $msg['sender'] ?> 对 <?= $msg['receiver'] ?> 说:</strong>
            <p><?= nl2br($msg['content']) ?></p>
            <small><?= $msg['created_at'] ?></small>
        </div>
        <?php endforeach; ?>
    </div>
</body>
</html>

安全增强措施

为防止XSS攻击和SQL注入,需要采取以下措施:

// 所有用户输入都经过htmlspecialchars处理
$stmt = $db->prepare("INSERT INTO messages (sender, receiver, content) VALUES (?, ?, ?)");
$stmt->execute([
    htmlspecialchars($_POST['sender']),
    htmlspecialchars($_POST['receiver']),
    htmlspecialchars($_POST['content'])
]);

// 数据库连接使用PDO预处理语句
$db = new PDO('mysql:host=localhost;dbname=love_wall', 'username', 'password');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

功能扩展建议

  • 添加分页功能避免数据过多

    $page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
    $limit = 10;
    $offset = ($page - 1) * $limit;
    $messages = $db->query("SELECT * FROM messages ORDER BY created_at DESC LIMIT $limit OFFSET $offset")->fetchAll();
  • 增加点赞功能

    ALTER TABLE messages ADD COLUMN likes INT DEFAULT 0;
  • 实现匿名发布功能

    php实现表白墙

    // 表单中添加匿名选项
    <input type="checkbox" name="anonymous" value="1"> 匿名发布
    // 处理时判断
    $sender = $_POST['anonymous'] ? '匿名' : htmlspecialchars($_POST['sender']);

部署注意事项

  • 确保服务器已安装PHP和MySQL
  • 配置正确的数据库连接信息
  • 设置合适的文件权限
  • 考虑添加验证码防止垃圾信息

这个基础实现可以根据需求继续扩展,如添加用户系统、图片上传、评论功能等。

标签: php
分享给朋友:

相关文章

php实现递归

php实现递归

递归的基本概念 递归是一种函数调用自身的技术,适用于解决可以分解为相同子问题的问题。在PHP中,递归需要明确的终止条件(基线条件),否则会导致无限循环。 递归实现阶乘 阶乘是经典的递归案例,n! =…

php实现

php实现

PHP 实现的基本方法 PHP 是一种服务器端脚本语言,广泛用于 Web 开发。以下是 PHP 实现的一些常见方法。 变量与数据类型 PHP 变量以 $ 开头,支持多种数据类型: $nam…

php队列的实现

php队列的实现

PHP队列的实现方式 PHP中实现队列功能可以通过多种方式,根据需求选择适合的方案: 使用数组实现基础队列 PHP数组本身支持队列操作,利用array_push和array_shift函数: $q…

php 实现链表

php 实现链表

PHP 实现链表的方法 链表是一种线性数据结构,由节点组成,每个节点包含数据和指向下一个节点的指针。PHP 中可以通过类和对象来实现链表。 定义链表节点类 创建一个 ListNode 类,用于表示链…

php 实现锁

php 实现锁

PHP 实现锁的常见方法 文件锁(flock) 利用 flock 函数对文件进行独占锁定,适用于单机环境。 $fp = fopen("lockfile.lock", "w+"); if (flock…

php redis 队列实现

php redis 队列实现

PHP Redis 队列实现 Redis 是一个高性能的键值存储系统,常被用作消息队列。以下是使用 PHP 和 Redis 实现队列的几种方法。 安装依赖 确保已安装 PHP Redis 扩展。可以…