🗣 Wd提问: PHP源码论坛系统
🤖 Ai回答: PHP源码论坛系统
下面是一个基于PHP和MySQL的简单论坛系统源码。这个系统包含用户注册、登录、发帖、回帖等基本功能。
数据库结构
首先创建数据库和表:
sql
CREATE DATABASE forum;
USE forum;
用户表
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
email VARCHAR(100) NOT NULL UNIQUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
帖子表
CREATE TABLE posts (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
content TEXT NOT NULL,
user_id INT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id)
);
回复表
CREATE TABLE replies (
id INT AUTO_INCREMENT PRIMARY KEY,
content TEXT NOT NULL,
user_id INT NOT NULL,
post_id INT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id),
FOREIGN KEY (post_id) REFERENCES posts(id)
);
系统文件结构
forum/
├── config.php 数据库配置
├── functions.php 公共函数
├── header.php 页面头部
├── footer.php 页面底部
├── index.php 首页(帖子列表)
├── register.php 用户注册
├── login.php 用户登录
├── logout.php 用户登出
├── post.php 发布帖子
├── view_post.php 查看帖子详情
├── reply.php 回复帖子
└── style.css 样式文件
源码实现
1、config.php 数据库配置
php
<?php
define('DB_HOST', 'localhost');
define('DB_USER', 'root');
define('DB_PASS', '');
define('DB_NAME', 'forum');
// 创建数据库连接
$conn = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);
// 检查连接
if (!$conn) {
die(连接失败: 、mysqli_connect_error());
}
?
2、functions.php 公共函数
php
<?php
require_once 'config.php';
// 用户注册
function registerUser($username, $password, $email) {
global $conn;
// 验证用户名是否已存在
$check_user = SELECT id FROM users WHERE username = ?;
$stmt = mysqli_prepare($conn, $check_user);
mysqli_stmt_bind_param($stmt, s, $username);
mysqli_stmt_execute($stmt);
mysqli_stmt_store_result($stmt);
if (mysqli_stmt_num_rows($stmt) 0) {
return 用户名已存在;
}
// 验证邮箱是否已存在
$check_email = SELECT id FROM users WHERE email = ?;
$stmt = mysqli_prepare($conn, $check_email);
mysqli_stmt_bind_param($stmt, s, $email);
mysqli_stmt_execute($stmt);
mysqli_stmt_store_result($stmt);
if (mysqli_stmt_num_rows($stmt) 0) {
return 邮箱已被注册;
}
// 密码加密
$hashed_password = password_hash($password, PASSWORD_DEFAULT);
// 插入用户
$insert = INSERT INTO users (username, password, email) VALUES (?, ?, ?);
$stmt = mysqli_prepare($conn, $insert);
mysqli_stmt_bind_param($stmt, sss, $username, $hashed_password, $email);
if (mysqli_stmt_execute($stmt)) {
return true;
} else {
return 注册失败: 、mysqli_error($conn);
}
}
// 用户登录
function loginUser($username, $password) {
global $conn;
$query = SELECT id, password FROM users WHERE username = ?;
$stmt = mysqli_prepare($conn, $query);
mysqli_stmt_bind_param($stmt, s, $username);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
if ($result && mysqli_num_rows($result) 0) {
$user = mysqli_fetch_assoc($result);
if (password_verify($password, $user['password'])) {
// 登录成功,设置session
session_start();
$_SESSION['user_id'] = $user['id'];
$_SESSION['username'] = $username;
return true;
}
}
return false;
}
// 获取所有帖子
function getAllPosts() {
global $conn;
$query = SELECT p.*, u.username
FROM posts p
JOIN users u ON p.user_id = u.id
ORDER BY p.created_at DESC;
$result = mysqli_query($conn, $query);
$posts = [];
while ($row = mysqli_fetch_assoc($result)) {
$posts[] = $row;
}
return $posts;
}
// 获取单个帖子
function getPost($post_id) {
global $conn;
$query = SELECT p.*, u.username
FROM posts p
JOIN users u ON p.user_id = u.id
WHERE p.id = ?;
$stmt = mysqli_prepare($conn, $query);
mysqli_stmt_bind_param($stmt, i, $post_id);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
if ($result && mysqli_num_rows($result) 0) {
return mysqli_fetch_assoc($result);
}
return null;
}
// 获取帖子的回复
function getReplies($post_id) {
global $conn;
$query = SELECT r.*, u.username
FROM replies r
JOIN users u ON r.user_id = u.id
WHERE r.post_id = ?
ORDER BY r.created_at ASC;
$stmt = mysqli_prepare($conn, $query);
mysqli_stmt_bind_param($stmt, i, $post_id);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
$replies = [];
while ($row = mysqli_fetch_assoc($result)) {
$replies[] = $row;
}
return $replies;
}
// 创建新帖子
function createPost($title, $content, $user_id) {
global $conn;
$query = INSERT INTO posts (title, content, user_id) VALUES (?, ?, ?);
$stmt = mysqli_prepare($conn, $query);
mysqli_stmt_bind_param($stmt, ssi, $title, $content, $user_id);
return mysqli_stmt_execute($stmt);
}
// 添加回复
function addReply($content, $user_id, $post_id) {
global $conn;
$query = INSERT INTO replies (content, user_id, post_id) VALUES (?, ?, ?);
$stmt = mysqli_prepare($conn, $query);
mysqli_stmt_bind_param($stmt, sii, $content, $user_id, $post_id);
return mysqli_stmt_execute($stmt);
}
// 检查用户是否登录
function isLoggedIn() {
return isset($_SESSION['user_id']);
}
// 获取当前用户ID
function getCurrentUserId() {
return $_SESSION['user_id'] ?? null;
}
// 获取当前用户名
function getCurrentUsername() {
return $_SESSION['username'] ?? null;
}
?
3、header.php 页面头部
php
<?php
session_start();
?
<!DOCTYPE html
<html lang=zh-CN
<head
<meta charset=UTF-8
<meta name=viewport content=width=device-width, initial-scale=1.0
<titlePHP论坛系统</title
<link rel=stylesheet href=style.css
</head
<body
<header
<div class=container
<h1<a href=index.phpPHP论坛系统</a</h1
<nav
<ul
<li<a href=index.php首页</a</li
<?php if (isLoggedIn()): ?
<li<a href=post.php发帖</a</li
<li<a href=logout.php退出 (<?php echo getCurrentUsername(); ?)</a</li
<?php else: ?
<li<a href=login.php登录</a</li
<li<a href=register.php注册</a</li
<?php endif; ?
</ul
</nav
</div
</header
<div class=container
<main
4、footer.php 页面底部
php
</main
</div
<footer
<div class=container
<p© <?php echo date('Y'); ? PHP论坛系统 保留所有权利</p
</div
</footer
</body
</html
5、index.php 首页(帖子列表)
php
<?php
require_once 'header.php';
require_once 'functions.php';
$posts = getAllPosts();
?
<h2最新帖子</h2
<?php if (empty($posts)):
📣 商家广告 :
👍
0
👎
IP地址: 32.187.77.80
搜索次数: 0
提问时间: 2025-11-05 21:19:49
🛒 域名购买 :
afuncard.com cgbc.cn cisou.com.cn ndgj.cn lb.gs 815.red wt.cx sou.gg 663.net.cn 6.ac.cn
❓️ 热门提问 :
服务器构建ftp top域名 手机怎么更新ios 香港的服务器比较好 VPS主机搭建教程 云虚拟主机平台 bet域名 有哪些香港服务器 什么是弹性云服务器 服务器暴力破解防护 豌豆Ai站群搜索引擎系统
🌐 域名评估 :
xphone.red k.ln.cn cc.gx.cn kimi.school pgqr.cn buddypet.com.cn gbif.cn juzxe.cn jamctr.com fwa.cn
⛏ 最新挖掘 :
凯里酸汤鱼 贵阳烤脑花 都匀毛尖茶 花溪牛肉粉 贵阳烤生蚝 贵阳烤豆腐 贵阳纸包鱼 贵阳特色菜
🖌 热门作画 :
🤝 关于我们:
豌豆Ai
域名
建站
站群
留痕
推广
评估
源码
开发Ai
工具
日记
价格
加盟
广告
流量
留言
联系
🗨 加入群聊 :
🔗 友情链接 :
平塘县福利院
搜索引擎入口
ai提问
🧰 站长工具 :Ai工具 whois查询 搜索
📢 温馨提示 :本站所有问答由Ai自动创作,内容仅供参考,若有误差请用“联系”里面信息通知我们人工修改或删除。
👉 技术支持 :本站由豌豆Ai 提供技术支持,使用的最新版:《豌豆Ai站群搜索引擎系统 V.25.10.25》搭建本站。