当前位置:首页 > PHP

php实现许愿墙完整版

2026-04-03 13:57:02PHP

许愿墙功能概述

许愿墙是一个允许用户发布、浏览、管理愿望的Web应用,核心功能包括用户提交愿望、展示所有愿望、后台管理(如审核、删除)。以下是基于PHP和MySQL的完整实现方案。

数据库设计

创建名为wishes的数据库表,包含以下字段:

CREATE TABLE wishes (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    content TEXT NOT NULL,
    color VARCHAR(20) DEFAULT 'yellow',
    position_x INT DEFAULT 100,
    position_y INT DEFAULT 100,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    is_approved TINYINT(1) DEFAULT 0
);

前端页面布局

采用HTML+CSS实现可拖拽的许愿贴样式:

<div id="wall" style="position:relative; height:800px; background:#f0f0f0;">
    <?php foreach($wishes as $wish): ?>
    <div class="wish" style="position:absolute; left:<?=$wish['position_x']?>px; top:<?=$wish['position_y']?>px; background:<?=$wish['color']?>; padding:10px; width:200px;">
        <p><?=htmlspecialchars($wish['content'])?></p>
        <small>—— <?=htmlspecialchars($wish['username'])?></small>
    </div>
    <?php endforeach; ?>
</div>

核心功能实现

提交愿望处理(submit_wish.php)

<?php
$conn = new mysqli('localhost', 'username', 'password', 'wishes');
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $username = $conn->real_escape_string($_POST['username']);
    $content = $conn->real_escape_string($_POST['content']);
    $color = $_POST['color'] ?? 'yellow';

    $sql = "INSERT INTO wishes (username, content, color) VALUES ('$username', '$content', '$color')";
    $conn->query($sql);
    header('Location: index.php');
}
?>

愿望展示(index.php)

<?php
$conn = new mysqli('localhost', 'username', 'password', 'wishes');
$result = $conn->query("SELECT * FROM wishes WHERE is_approved=1 ORDER BY created_at DESC");
$wishes = $result->fetch_all(MYSQLI_ASSOC);
?>
<!-- 包含前端HTML部分 -->

拖拽功能实现

使用jQuery实现愿望贴拖拽并保存位置:

$('.wish').draggable({
    stop: function(event, ui) {
        $.post('update_position.php', {
            id: $(this).data('id'),
            x: ui.position.left,
            y: ui.position.top
        });
    }
});

位置更新(update_position.php)

<?php
$conn = new mysqli('localhost', 'username', 'password', 'wishes');
$id = (int)$_POST['id'];
$x = (int)$_POST['x'];
$y = (int)$_POST['y'];
$conn->query("UPDATE wishes SET position_x=$x, position_y=$y WHERE id=$id");
?>

后台管理功能

创建管理界面(admin.php)实现审核功能:

// 获取未审核愿望
$pending = $conn->query("SELECT * FROM wishes WHERE is_approved=0");

// 审核通过处理
if (isset($_POST['approve'])) {
    $id = (int)$_POST['id'];
    $conn->query("UPDATE wishes SET is_approved=1 WHERE id=$id");
}

安全增强措施

  1. 对所有用户输入使用htmlspecialchars()过滤

  2. 使用预处理语句防止SQL注入:

    $stmt = $conn->prepare("INSERT INTO wishes (username, content) VALUES (?, ?)");
    $stmt->bind_param("ss", $_POST['username'], $_POST['content']);
    $stmt->execute();
  3. 添加CSRF防护令牌

  4. 对管理员界面进行密码保护

    php实现许愿墙完整版

部署建议

  1. 使用Apache/Nginx作为Web服务器
  2. 配置PHP版本≥7.4以获得更好性能
  3. 定期备份数据库
  4. 对用户提交内容进行敏感词过滤

完整项目应包含用户认证、分页显示、愿望分类等扩展功能,上述代码提供了最基础的核心实现框架。

标签: 完整版php
分享给朋友:

相关文章

php实现栈

php实现栈

栈的基本概念 栈(Stack)是一种遵循后进先出(LIFO)原则的数据结构。核心操作包括: push:元素入栈。 pop:元素出栈(返回并移除栈顶元素)。 peek:查看栈顶元素…

php实现静态

php实现静态

静态化实现方法 PHP实现静态化主要通过生成HTML文件或缓存机制来减少服务器动态解析的开销。以下是几种常见方法: 生成静态HTML文件 通过file_put_contents()将动态内容保存为H…

php实现博客

php实现博客

使用PHP实现博客系统 数据库设计 创建数据库表存储博客文章和用户信息。常见的表包括posts(文章)和users(用户)。 CREATE TABLE users ( id INT AUTO…

php mvc实现

php mvc实现

PHP MVC 实现步骤 模型(Model)层 模型负责数据处理和业务逻辑,通常与数据库交互。创建一个基类模型,其他具体模型继承它。 class Model { protected $db;…

php 实现mvc

php 实现mvc

PHP 实现 MVC 架构的方法 MVC(Model-View-Controller)是一种常见的软件设计模式,用于分离业务逻辑、用户界面和用户输入。以下是 PHP 实现 MVC 架构的关键步骤:…

php实现注册登录

php实现注册登录

PHP 注册功能实现 创建数据库表(以 MySQL 为例) CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, usern…