当前位置:首页 > PHP

php实现许愿墙完整版

2026-02-28 04:54:58PHP

以下是PHP实现许愿墙的完整版方案,包含核心功能模块和代码示例:

数据库设计

创建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,
  `time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `ip` varchar(20) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

前端页面布局

基础HTML结构包含表单和展示区:

php实现许愿墙完整版

<div class="wish-container">
  <form method="post" action="post_wish.php">
    <textarea name="content" placeholder="写下你的愿望..."></textarea>
    <input type="text" name="username" placeholder="你的昵称">
    <select name="color">
      <option value="yellow">黄色</option>
      <option value="blue">蓝色</option>
      <option value="pink">粉色</option>
    </select>
    <button type="submit">许愿</button>
  </form>

  <div class="wish-wall">
    <?php include 'get_wishes.php'; ?>
  </div>
</div>

后端处理逻辑

接收表单提交的post_wish.php:

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    require 'db_connect.php';

    $content = htmlspecialchars($_POST['content']);
    $username = htmlspecialchars($_POST['username']);
    $color = $_POST['color'];
    $ip = $_SERVER['REMOTE_ADDR'];

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

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

数据展示处理

get_wishes.php查询并显示愿望:

php实现许愿墙完整版

<?php
require 'db_connect.php';

$stmt = $pdo->query("SELECT * FROM wishes ORDER BY time DESC");
while ($row = $stmt->fetch()) {
    echo '<div class="wish-item" style="background:'.$row['color'].'">';
    echo '<p>'.$row['content'].'</p>';
    echo '<span>'.$row['username'].' • '.$row['time'].'</span>';
    echo '</div>';
}
?>

数据库连接配置

db_connect.php配置文件:

<?php
$host = 'localhost';
$db   = 'wishwall';
$user = 'root';
$pass = '';
$charset = 'utf8mb4';

$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$options = [
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_EMULATE_PREPARES   => false,
];

try {
    $pdo = new PDO($dsn, $user, $pass, $options);
} catch (\PDOException $e) {
    throw new \PDOException($e->getMessage(), (int)$e->getCode());
}
?>

样式美化

基础CSS样式示例:

.wish-container {
    max-width: 800px;
    margin: 0 auto;
    padding: 20px;
}

.wish-wall {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: 15px;
    margin-top: 30px;
}

.wish-item {
    padding: 15px;
    border-radius: 8px;
    box-shadow: 0 2px 5px rgba(0,0,0,0.1);
}

.wish-item p {
    margin: 0 0 10px 0;
    word-break: break-word;
}

.wish-item span {
    font-size: 12px;
    color: #666;
}

安全增强措施

添加防XSS和基础防护:

// 在post_wish.php开头添加
session_start();
if (empty($_POST['content']) || strlen($_POST['content']) > 255) {
    $_SESSION['error'] = '愿望内容不能为空或超过255字';
    header("Location: index.php");
    exit;
}

// 添加频率限制
$stmt = $pdo->prepare("SELECT COUNT(*) FROM wishes WHERE ip = ? AND time > DATE_SUB(NOW(), INTERVAL 1 HOUR)");
$stmt->execute([$_SERVER['REMOTE_ADDR']]);
if ($stmt->fetchColumn() > 5) {
    $_SESSION['error'] = '操作过于频繁,请稍后再试';
    header("Location: index.php");
    exit;
}

扩展功能建议

  1. 增加AJAX无刷新提交
  2. 添加图片上传功能
  3. 实现愿望点赞系统
  4. 开发后台审核功能
  5. 添加分页加载机制

完整项目应包含错误处理、输入验证和日志记录等功能模块,以上代码提供了基础实现框架。实际部署时需要根据服务器环境调整数据库连接参数和安全配置。

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

相关文章

php实现文件上传

php实现文件上传

文件上传的基本实现 在PHP中实现文件上传需要使用$_FILES超全局数组处理上传的文件数据。表单必须设置enctype="multipart/form-data"属性,并采用POST方法提交。 创…

php长连接实现

php长连接实现

PHP 长连接实现方法 长连接(Keep-Alive)允许客户端与服务器在一次TCP连接中发送和接收多个HTTP请求/响应,减少重复建立连接的开销。以下是PHP中实现长连接的几种方式: 配置HTTP…

php实现一个

php实现一个

PHP 实现一个简单的计算器 创建一个基本的计算器,支持加、减、乘、除运算。以下是一个完整的实现代码示例: <?php $result = ""; if ($_SERVER["REQUEST_…

php 实现队列

php 实现队列

PHP 实现队列的方法 PHP 可以通过多种方式实现队列功能,以下是几种常见的实现方法: 使用数组实现队列 PHP 数组可以通过 array_push 和 array_shift 函数模拟队列的先进…

php 实现单点登录

php 实现单点登录

PHP 实现单点登录的方法 单点登录(SSO)允许用户通过一次登录访问多个相互信任的系统。以下是基于 PHP 的实现方案: 基于共享 Session 的方案 在同一个主域名下的子域名间可以通过共享…

php实现支付宝支付

php实现支付宝支付

支付宝支付集成步骤 准备工作 在开始集成支付宝支付前,确保已注册支付宝开放平台账号并完成企业实名认证。创建应用后获取APPID、应用私钥和支付宝公钥。 配置支付宝SDK 通过Composer安装支付…