php实现发帖
PHP 实现发帖功能
数据库表设计
创建名为 posts 的表,包含以下字段:
id:主键,自增title:帖子标题,VARCHAR 类型content:帖子内容,TEXT 类型created_at:发帖时间,TIMESTAMP 类型
SQL 语句示例:
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">
<label for="title">标题:</label>
<input type="text" id="title" name="title" required>
<label for="content">内容:</label>
<textarea id="content" name="content" required></textarea>
<button type="submit">发布</button>
</form>
处理表单提交
PHP 处理代码 (submit_post.php):
<?php
// 连接数据库
$db = new PDO('mysql:host=localhost;dbname=your_database', 'username', 'password');
// 获取表单数据
$title = $_POST['title'];
$content = $_POST['content'];
// 插入数据到数据库
$stmt = $db->prepare("INSERT INTO posts (title, content) VALUES (:title, :content)");
$stmt->bindParam(':title', $title);
$stmt->bindParam(':content', $content);
$stmt->execute();
// 重定向到帖子列表页
header('Location: posts.php');
exit;
?>
显示帖子列表
PHP 显示代码 (posts.php):
<?php
// 连接数据库
$db = new PDO('mysql:host=localhost;dbname=your_database', 'username', 'password');
// 查询所有帖子
$stmt = $db->query("SELECT * FROM posts ORDER BY created_at DESC");
$posts = $stmt->fetchAll(PDO::FETCH_ASSOC);
?>
<!DOCTYPE html>
<html>
<head>
<title>帖子列表</title>
</head>
<body>
<h1>帖子列表</h1>
<a href="new_post.php">新建帖子</a>
<?php foreach ($posts as $post): ?>
<div class="post">
<h2><?php echo htmlspecialchars($post['title']); ?></h2>
<p><?php echo nl2br(htmlspecialchars($post['content'])); ?></p>
<small><?php echo $post['created_at']; ?></small>
</div>
<?php endforeach; ?>
</body>
</html>
安全注意事项
- 使用预处理语句防止 SQL 注入
- 对输出内容使用
htmlspecialchars()防止 XSS 攻击 - 对多行文本使用
nl2br()保持换行格式 - 设置数据库连接字符集为 UTF-8
扩展功能建议
- 添加用户认证系统
- 实现帖子分类功能
- 添加图片上传功能
- 实现帖子编辑和删除功能







