php实现发帖
PHP 实现发帖功能
数据库准备
创建一个数据库表用于存储帖子信息,例如:
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>
处理表单提交
创建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 (?, ?)");
$stmt->execute([$title, $content]);
// 重定向到帖子列表
header('Location: posts.php');
exit;
?>
显示帖子列表
创建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);
?>
<h1>帖子列表</h1>
<?php foreach ($posts as $post): ?>
<div class="post">
<h2><?= htmlspecialchars($post['title']) ?></h2>
<p><?= nl2br(htmlspecialchars($post['content'])) ?></p>
<small>发布于:<?= $post['created_at'] ?></small>
</div>
<?php endforeach; ?>
安全增强
为增强安全性,可以添加以下措施:
// 防止SQL注入使用预处理语句
// 过滤HTML输出使用htmlspecialchars
// 对换行符转换使用nl2br
// 添加CSRF防护令牌
文件上传扩展
如需支持图片上传,可添加文件上传功能:
if ($_FILES['image']['error'] === UPLOAD_ERR_OK) {
$uploadDir = 'uploads/';
$filename = uniqid() . '_' . basename($_FILES['image']['name']);
move_uploaded_file($_FILES['image']['tmp_name'], $uploadDir . $filename);
// 将$filename存入数据库
}
会话管理
添加用户认证功能确保只有登录用户可发帖:

session_start();
if (!isset($_SESSION['user_id'])) {
header('Location: login.php');
exit;
}
以上代码提供了PHP实现发帖功能的基本框架,可根据实际需求进行扩展和完善。






