当前位置:首页 > PHP

php实现许愿墙完整版

2026-02-14 05:50:46PHP

许愿墙功能概述

许愿墙是一个允许用户发布、查看和管理愿望的Web应用,核心功能包括用户提交愿望、展示愿望列表、后台管理模块。

数据库设计

创建MySQL数据库表结构:

CREATE TABLE `wishes` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `content` varchar(255) NOT NULL,
  `username` varchar(50) NOT NULL,
  `color` varchar(20) NOT NULL,
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `ip_address` varchar(20) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

前端页面实现

创建HTML表单提交页面(index.php):

php实现许愿墙完整版

<!DOCTYPE html>
<html>
<head>
    <title>许愿墙</title>
    <style>
        .wish-container { display: flex; flex-wrap: wrap; }
        .wish-box { 
            width: 200px; padding: 15px; margin: 10px; 
            border-radius: 5px; position: relative;
        }
    </style>
</head>
<body>
    <form action="submit_wish.php" method="post">
        <textarea name="content" required></textarea>
        <input type="text" name="username" placeholder="昵称" required>
        <select name="color">
            <option value="yellow">黄色</option>
            <option value="pink">粉色</option>
            <option value="blue">蓝色</option>
        </select>
        <button type="submit">提交愿望</button>
    </form>

    <div class="wish-container">
        <?php include 'display_wishes.php'; ?>
    </div>
</body>
</html>

愿望提交处理

创建submit_wish.php处理提交:

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $content = htmlspecialchars($_POST['content']);
    $username = htmlspecialchars($_POST['username']);
    $color = $_POST['color'];
    $ip = $_SERVER['REMOTE_ADDR'];

    $conn = new mysqli('localhost', 'username', 'password', 'wish_wall');
    $stmt = $conn->prepare("INSERT INTO wishes (content, username, color, ip_address) VALUES (?, ?, ?, ?)");
    $stmt->bind_param("ssss", $content, $username, $color, $ip);
    $stmt->execute();

    header("Location: index.php");
    exit();
}
?>

愿望展示功能

创建display_wishes.php显示愿望:

php实现许愿墙完整版

<?php
$conn = new mysqli('localhost', 'username', 'password', 'wish_wall');
$result = $conn->query("SELECT * FROM wishes ORDER BY create_time DESC LIMIT 50");

while ($row = $result->fetch_assoc()) {
    echo '<div class="wish-box" style="background-color: '.$row['color'].'">';
    echo '<p>'.$row['content'].'</p>';
    echo '<small>By: '.$row['username'].'</small>';
    echo '</div>';
}
$conn->close();
?>

后台管理功能

创建admin.php管理界面:

<?php
session_start();
if (!isset($_SESSION['admin'])) {
    header("Location: login.php");
    exit();
}

$conn = new mysqli('localhost', 'username', 'password', 'wish_wall');
$result = $conn->query("SELECT * FROM wishes ORDER BY create_time DESC");

echo '<table border="1">';
while ($row = $result->fetch_assoc()) {
    echo '<tr>';
    echo '<td>'.$row['id'].'</td>';
    echo '<td>'.$row['content'].'</td>';
    echo '<td>'.$row['username'].'</td>';
    echo '<td>'.$row['ip_address'].'</td>';
    echo '<td><a href="delete_wish.php?id='.$row['id'].'">删除</a></td>';
    echo '</tr>';
}
echo '</table>';
?>

安全防护措施

防止SQL注入和XSS攻击:

// 所有用户输入必须过滤
$content = filter_input(INPUT_POST, 'content', FILTER_SANITIZE_STRING);
$username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);

// 使用预处理语句
$stmt = $conn->prepare("INSERT INTO wishes (...) VALUES (?, ?)");
$stmt->bind_param("ss", $content, $username);

// 限制提交频率
if (isset($_SESSION['last_submit']) && time() - $_SESSION['last_submit'] < 60) {
    die('请等待60秒后再提交');
}
$_SESSION['last_submit'] = time();

部署注意事项

  1. 配置数据库连接参数
  2. 设置目录权限(upload目录可写)
  3. 配置服务器rewrite规则(如需伪静态)
  4. 定期备份数据库
  5. 实现CSRF防护令牌机制

完整实现需要根据实际需求调整样式、功能和安全性设置。建议添加验证码功能防止垃圾提交,并实现分页显示优化大量愿望的展示效果。

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

相关文章

php实现上传

php实现上传

PHP 文件上传实现 HTML 表单设置 创建一个包含文件上传字段的 HTML 表单,确保表单的 enctype 属性设置为 multipart/form-data,这是文件上传必需的设置。 <…

php实现分类

php实现分类

PHP实现分类的方法 数据库设计 创建分类表时,通常需要包含id、名称、父级id等字段。父级id用于实现多级分类结构。 CREATE TABLE categories ( id INT AU…

php https实现

php https实现

PHP 中实现 HTTPS 的方法 在 PHP 中实现 HTTPS 主要通过配置服务器和编写代码来确保通信的安全性。以下是几种常见的方法: 配置服务器支持 HTTPS 确保服务器已安装 SSL/T…

php搜索功能的实现

php搜索功能的实现

实现PHP搜索功能的方法 数据库搜索 使用SQL的LIKE语句进行模糊匹配,适用于简单的搜索需求。 $searchTerm = $_GET['search']; $query = "SELECT *…

php实现验证码的识别

php实现验证码的识别

验证码识别的基本方法 验证码识别通常分为手动实现和第三方工具两种方式。手动实现需要图像处理和机器学习知识,而第三方工具则更快捷。 使用Tesseract OCR识别验证码 Tesseract是一个开…

php下载文件实现

php下载文件实现

PHP 下载文件实现方法 使用 header() 函数强制下载 设置合适的 HTTP 头信息,强制浏览器下载文件而非直接打开。 $file_path = '/path/to/file.pdf'; $…