当前位置:首页 > 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实现分页

PHP实现分页的基本方法 使用LIMIT和OFFSET进行数据库查询分页。通过计算当前页码和每页显示数量,动态生成SQL语句。 $page = isset($_GET['page']) ? (int…

php无限分类的实现

php无限分类的实现

PHP无限分类的实现 无限分类是一种常见的树形结构数据组织方式,适用于商品分类、菜单管理、地区选择等场景。以下是几种实现方法: 递归实现法 递归是最直观的实现方式,通过函数自身调用来遍历子分类。数据…

php 实现排序

php 实现排序

PHP 实现数组排序的方法 PHP 提供了多种内置函数和方法来实现数组排序,适用于不同的排序需求。以下是一些常见的排序实现方式: 使用 sort() 函数对数组进行升序排序 sort() 函数对数组…

php实现登陆

php实现登陆

PHP 实现登录功能 创建登录表单 在 HTML 文件中创建一个登录表单,包含用户名和密码输入框,表单的 action 属性指向处理登录的 PHP 文件。 <form action="logi…

无限分类实现 php

无限分类实现 php

无限分类的实现方法 无限分类通常用于构建多层级结构的数据,如商品分类、部门架构等。以下是几种常见的实现方式: 邻接列表模式(Adjacency List) 邻接列表是最简单的实现方式,通过在每个记录…

php实现域名

php实现域名

PHP实现域名操作的方法 获取当前域名 使用$_SERVER['HTTP_HOST']可以获取当前访问的域名: $currentDomain = $_SERVER['HTTP_HOST']; ech…