当前位置: 首页 > news >正文

【毕业设计】基于 PHP 开发的社区交流系统

基于 PHP 开发的社区交流系统可以是一个论坛、博客平台或是问答网站等形式的在线平台,用于用户之间的互动交流。以下是一个简单的 PHP 社区交流系统的示例,包括用户注册、登录、发布帖子、回复帖子等功能。

技术栈

  • 前端:HTML, CSS, JavaScript
  • 后端:PHP
  • 数据库:MySQL

环境准备

  1. 安装 PHP 和 MySQL 服务。
  2. 安装 Web 服务器(如 Apache 或 Nginx)。
  3. 创建 MySQL 数据库。

数据库设计

创建一个名为 community_db 的数据库,并创建如下表结构:

  1. users 表:存储用户信息。
  2. posts 表:存储帖子信息。
  3. comments 表:存储评论信息。
CREATE DATABASE community_db;USE community_db;CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(255) NOT NULL UNIQUE,password VARCHAR(255) NOT NULL,email VARCHAR(255) NOT NULL UNIQUE
);CREATE TABLE posts (id INT AUTO_INCREMENT PRIMARY KEY,user_id INT NOT NULL,title VARCHAR(255) NOT NULL,content TEXT NOT NULL,created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,FOREIGN KEY (user_id) REFERENCES users(id)
);CREATE TABLE comments (id INT AUTO_INCREMENT PRIMARY KEY,post_id INT NOT NULL,user_id INT NOT NULL,content TEXT NOT NULL,created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,FOREIGN KEY (post_id) REFERENCES posts(id),FOREIGN KEY (user_id) REFERENCES users(id)
);

PHP 脚本

1. 用户注册 (register.php)
<?php
session_start();
require_once 'db.php';if ($_SERVER["REQUEST_METHOD"] == "POST") {$username = $_POST['username'];$email = $_POST['email'];$password = password_hash($_POST['password'], PASSWORD_DEFAULT);$stmt = $db->prepare("INSERT INTO users (username, email, password) VALUES (?, ?, ?)");$stmt->bind_param("sss", $username, $email, $password);if ($stmt->execute()) {header("Location: login.php");} else {echo "Error: " . $stmt->error;}
}
?><!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Register</title>
</head>
<body><h1>Register</h1><form action="register.php" method="post">Username: <input type="text" name="username" required><br>Email: <input type="email" name="email" required><br>Password: <input type="password" name="password" required><br><input type="submit" value="Register"></form>
</body>
</html>
2. 用户登录 (login.php)
<?php
session_start();
require_once 'db.php';if ($_SERVER["REQUEST_METHOD"] == "POST") {$username = $_POST['username'];$password = $_POST['password'];$stmt = $db->prepare("SELECT * FROM users WHERE username = ?");$stmt->bind_param("s", $username);$stmt->execute();$result = $stmt->get_result();if ($row = $result->fetch_assoc()) {if (password_verify($password, $row['password'])) {$_SESSION['user_id'] = $row['id'];header("Location: index.php");} else {echo "Invalid username or password.";}} else {echo "User not found.";}
}
?><!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Login</title>
</head>
<body><h1>Login</h1><form action="login.php" method="post">Username: <input type="text" name="username" required><br>Password: <input type="password" name="password" required><br><input type="submit" value="Login"></form>
</body>
</html>
3. 主页 (index.php)
<?php
session_start();
require_once 'db.php';if (!isset($_SESSION['user_id'])) {header("Location: login.php");exit;
}$user_id = $_SESSION['user_id'];$stmt = $db->query("SELECT * FROM posts ORDER BY created_at DESC");
$posts = $stmt->fetch_all(MYSQLI_ASSOC);
?><!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Community</title>
</head>
<body><h1>Welcome to the Community!</h1><a href="logout.php">Logout</a><h2>Create Post</h2><form action="create_post.php" method="post">Title: <input type="text" name="title" required><br>Content: <textarea name="content" required></textarea><br><input type="submit" value="Create Post"></form><hr><?php foreach ($posts as $post): ?><h2><?php echo htmlspecialchars($post['title']); ?></h2><p><?php echo htmlspecialchars($post['content']); ?></p><a href="comment.php?id=<?php echo $post['id']; ?>">Comment</a><hr><?php endforeach; ?>
</body>
</html>
4. 创建帖子 (create_post.php)
<?php
session_start();
require_once 'db.php';if ($_SERVER["REQUEST_METHOD"] == "POST") {$title = $_POST['title'];$content = $_POST['content'];$user_id = $_SESSION['user_id'];$stmt = $db->prepare("INSERT INTO posts (user_id, title, content) VALUES (?, ?, ?)");$stmt->bind_param("iss", $user_id, $title, $content);if ($stmt->execute()) {header("Location: index.php");} else {echo "Error: " . $stmt->error;}
}
5. 发表评论 (comment.php)
<?php
session_start();
require_once 'db.php';$post_id = intval($_GET['id']);if ($_SERVER["REQUEST_METHOD"] == "POST") {$content = $_POST['content'];$user_id = $_SESSION['user_id'];$stmt = $db->prepare("INSERT INTO comments (post_id, user_id, content) VALUES (?, ?, ?)");$stmt->bind_param("iii", $post_id, $user_id, $content);if ($stmt->execute()) {header("Location: comment.php?id=$post_id");} else {echo "Error: " . $stmt->error;}
}$stmt = $db->query("SELECT * FROM posts WHERE id = $post_id");
$post = $stmt->fetch_assoc();$stmt = $db->query("SELECT * FROM comments WHERE post_id = $post_id");
$comments = $stmt->fetch_all(MYSQLI_ASSOC);?><!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Comment on Post</title>
</head>
<body><h1><?php echo htmlspecialchars($post['title']); ?></h1><p><?php echo htmlspecialchars($post['content']); ?></p><h2>Add Comment</h2><form action="comment.php?id=<?php echo $post_id; ?>" method="post">Content: <textarea name="content" required></textarea><br><input type="submit" value="Add Comment"></form><hr><h2>Comments</h2><?php foreach ($comments as $comment): ?><p><?php echo htmlspecialchars($comment['content']); ?></p><?php endforeach; ?>
</body>
</html>

其他脚本

6. 注销 (logout.php)
<?php
session_start();
session_destroy();
header("Location: login.php");
exit;

数据库连接 (db.php)

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "community_db";$db = new mysqli($servername, $username, $password, $dbname);if ($db->connect_error) {die("Connection failed: " . $db->connect_error);
}
?>

总结

以上代码展示了如何创建一个简单的基于 PHP 的社区交流系统,包括用户注册、登录、创建帖子、发表评论等功能。实际应用中还需要考虑安全性问题,如输入验证、SQL 注入防护等,并且可以增加更多功能,如搜索、分类、用户权限管理等。

http://www.lryc.cn/news/443551.html

相关文章:

  • RK3568 解决Ubuntu加载驱动模块报错以及开机启动如何自动加载模块
  • Fyne ( go跨平台GUI )中文文档-Fyne总览(二)
  • 微服务常见面试题总结
  • 汽车电子零部件(16):ZCU区域控制器
  • 如何在Java服务中实现数据一致性:事务与锁机制的综合应用
  • 记录一下ElementUI 3 在浏览器导入, table表格显示问题
  • 【JavaScript】数据结构之堆
  • 工程车辆目标检测、程车检测算法、工程车辆类型检测算法
  • 【技术文章】ArcGIS Pro如何批量导出符号和工程样式?
  • javascript的闭包学习
  • JavaScript高级—— js 是单线程运行的
  • Java 微服务框架 HP-SOA v1.1.4
  • 代码随想录Day 52|题目:101.孤岛的面积、102.沉没孤岛、103.水流问题、104.建造最大岛屿
  • go webapi上传文件
  • 【小沐学GIS】基于Openstreetmap创建Sionna RT场景(Python)
  • 网安面试题1
  • 你了解system V的ipc底层如何设计的吗?消息队列互相通信的原理是什么呢?是否经常将信号量和信号混淆呢?——问题详解
  • python爬虫初体验(一)
  • ER 图 Entity-Relationship (ER) diagram 101 电子商城 数据库设计
  • JavaSE--IO流总览06:字符转换输入(输出)流: InputStreamReader ,OutputStreamWrite
  • 浙版传媒思迈特软件大数据分析管理平台建设项目正式启动
  • 漏洞——CVE简介
  • IT行业中的技术趋势与未来展望
  • 解决 webpack 配置 sass-loader后报错,无法正常build
  • CentOS中使用DockerCompose方式部署带postgis的postgresql(附kartoza/docker-postgis镜像下载)
  • 初识elasticsearch
  • react hooks--React.memo
  • App端测——稳定性测试
  • [数据结构与算法·C++] 笔记 1.4 算法复杂性分析
  • Hive parquet表通过csv文件导入数据