php发帖实现
PHP 发帖实现
数据库准备
创建一个数据库表用于存储帖子信息。以下是一个简单的 MySQL 表结构示例:
CREATE TABLE posts (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
content TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
表单设计
创建一个 HTML 表单用于提交帖子内容:
<form action="submit_post.php" method="post">
<input type="text" name="title" placeholder="标题" required>
<textarea name="content" placeholder="内容" required></textarea>
<button type="submit">发布</button>
</form>
处理表单提交
创建 submit_post.php 文件处理表单提交并将数据存入数据库:
<?php
// 连接数据库
$conn = new mysqli('localhost', 'username', 'password', 'database_name');
// 检查连接
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
// 获取表单数据
$title = $_POST['title'];
$content = $_POST['content'];
// 准备并执行 SQL 插入语句
$stmt = $conn->prepare("INSERT INTO posts (title, content) VALUES (?, ?)");
$stmt->bind_param("ss", $title, $content);
if ($stmt->execute()) {
echo "帖子发布成功";
} else {
echo "错误: " . $stmt->error;
}
// 关闭连接
$stmt->close();
$conn->close();
?>
显示帖子列表
创建一个页面显示所有帖子:

<?php
// 连接数据库
$conn = new mysqli('localhost', 'username', 'password', 'database_name');
// 检查连接
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
// 查询所有帖子
$sql = "SELECT id, title, content, created_at FROM posts ORDER BY created_at DESC";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "<h3>" . htmlspecialchars($row['title']) . "</h3>";
echo "<p>" . nl2br(htmlspecialchars($row['content'])) . "</p>";
echo "<small>" . $row['created_at'] . "</small><hr>";
}
} else {
echo "暂无帖子";
}
// 关闭连接
$conn->close();
?>
安全注意事项
- 使用
htmlspecialchars()函数防止 XSS 攻击 - 使用预处理语句防止 SQL 注入
- 对用户输入进行验证和过滤
- 考虑添加 CSRF 保护
扩展功能
- 添加用户认证系统
- 实现帖子分类和标签
- 添加图片上传功能
- 实现分页显示
- 添加评论功能






