当前位置:首页 > 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中,递归需要明确的终止条件(基线条件),否则会导致无限循环。 递归实现阶乘 阶乘是经典的递归案例,n! =…

php搜索功能实现

php搜索功能实现

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

php 实现链表

php 实现链表

PHP 实现链表的方法 链表是一种线性数据结构,由节点组成,每个节点包含数据和指向下一个节点的指针。PHP 中可以通过类和对象来实现链表。 定义链表节点类 创建一个 ListNode 类,用于表示链…

php session 实现购物车

php session 实现购物车

PHP Session 实现购物车的方法 初始化 Session 在 PHP 脚本的最开始调用 session_start() 函数,确保会话已启用。这通常在页面的顶部完成。 session_sta…

php 实现锁

php 实现锁

PHP 实现锁的常见方法 文件锁(flock) 利用 flock 函数对文件进行独占锁定,适用于单机环境。 $fp = fopen("lockfile.lock", "w+"); if (f…

php 实现表单验证

php 实现表单验证

表单验证基础方法 使用内置函数和条件判断进行基础验证,例如检查空值、长度限制等: $name = $_POST['name'] ?? ''; $email = $_POST['email'] ??…