当前位置:首页 > PHP

php实现许愿墙完整版

2026-01-29 07:42:09PHP

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;

数据库连接配置

创建config.php文件存放数据库连接信息:

<?php
define('DB_HOST', 'localhost');
define('DB_USER', 'root');
define('DB_PASS', 'password');
define('DB_NAME', 'wishwall');
?>

核心功能实现

提交愿望功能 创建submit.php处理表单提交:

php实现许愿墙完整版

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

    $conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
    $stmt = $conn->prepare("INSERT INTO wishes(content, username, color, ip) VALUES(?, ?, ?, ?)");
    $stmt->bind_param("ssss", $content, $username, $color, $ip);
    $stmt->execute();
    header("Location: index.php");
}

显示愿望功能 创建index.php显示所有愿望:

require 'config.php';
$conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
$result = $conn->query("SELECT * FROM wishes ORDER BY time DESC");

while($row = $result->fetch_assoc()){
    echo '<div class="wish" style="background:'.$row['color'].'">';
    echo '<p>'.$row['content'].'</p>';
    echo '<span>'.$row['username'].' '.$row['time'].'</span>';
    echo '</div>';
}

前端界面设计

HTML结构

php实现许愿墙完整版

<!DOCTYPE html>
<html>
<head>
    <title>许愿墙</title>
    <style>
        .wish { 
            width: 200px; 
            padding: 15px; 
            margin: 10px; 
            float: left;
            border-radius: 5px;
            box-shadow: 2px 2px 5px #888;
        }
    </style>
</head>
<body>
    <form action="submit.php" method="post">
        <textarea name="content" required></textarea>
        <input type="text" name="username" placeholder="你的名字" required>
        <select name="color">
            <option value="#FFCCCC">粉色</option>
            <option value="#CCFFCC">绿色</option>
            <option value="#CCCCFF">蓝色</option>
        </select>
        <button type="submit">许愿</button>
    </form>

    <div id="wishwall">
        <?php include 'index.php'; ?>
    </div>
</body>
</html>

安全增强措施

添加防XSS和SQL注入防护:

// 对所有用户输入进行过滤
function clean_input($data) {
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
}

// 使用预处理语句防止SQL注入
$stmt = $conn->prepare("INSERT INTO wishes VALUES(NULL, ?, ?, ?, NOW(), ?)");
$stmt->bind_param("ssss", $content, $username, $color, $ip);

分页功能实现

修改index.php添加分页支持:

$per_page = 10;
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$start = ($page-1) * $per_page;

$total = $conn->query("SELECT COUNT(*) FROM wishes")->fetch_row()[0];
$pages = ceil($total / $per_page);

$result = $conn->query("SELECT * FROM wishes ORDER BY time DESC LIMIT $start, $per_page");

// 显示分页链接
for($i=1; $i<=$pages; $i++){
    echo '<a href="?page='.$i.'">'.$i.'</a> ';
}

完整项目结构

/wishwall
├── config.php       # 数据库配置
├── index.php        # 显示愿望
├── submit.php       # 处理提交
├── style.css        # 样式文件
└── install.sql      # 数据库初始化脚本

该实现包含完整的许愿墙功能,包括愿望提交、显示、分页和安全防护措施。可根据需要进一步扩展功能,如愿望审核、点赞评论等。

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

相关文章

php长连接实现

php长连接实现

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

php实现排序

php实现排序

PHP 数组排序方法 PHP 提供了多种内置函数用于数组排序,适用于不同的排序需求。以下是常见的排序方法: 按值升序排序 sort() 函数对数组按值升序排序,重置键名(索引数组适用): $num…

php实现跳转

php实现跳转

PHP 实现页面跳转的方法 在 PHP 中实现页面跳转有多种方式,以下是常见的几种方法及其适用场景: 使用 header() 函数 通过 header() 函数发送 HTTP 头部信息实现跳转。注意…

php怎么实现登录功能

php怎么实现登录功能

数据库准备 创建用户表存储登录信息,通常包括用户名、密码(需加密)等字段。示例SQL: CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY…

php搜索功能实现

php搜索功能实现

实现基本的PHP搜索功能 使用MySQL数据库和PHP实现简单的关键词搜索功能。需要确保数据库中有可供搜索的表和数据。 // 连接数据库 $conn = new mysqli('localhost'…

php mvc实现

php mvc实现

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