php个人博客实现
PHP个人博客实现指南
数据库设计
使用MySQL创建基础表结构,存储文章、用户和评论数据。文章表需包含标题、内容、发布时间等字段,用户表存储账号密码,评论表关联文章和用户。
CREATE TABLE `posts` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL,
`content` text NOT NULL,
`created_at` datetime NOT NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(50) NOT NULL,
`password` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
);
核心功能实现
通过PDO连接数据库,实现文章CRUD操作。采用预处理语句防止SQL注入,密码存储使用password_hash()加密。
// 数据库连接
$db = new PDO('mysql:host=localhost;dbname=blog', 'username', 'password');
// 新增文章
$stmt = $db->prepare("INSERT INTO posts (title, content, created_at) VALUES (?, ?, NOW())");
$stmt->execute([$title, $content]);
前端界面构建
采用Bootstrap快速搭建响应式布局。主页显示文章列表,详情页展示完整内容和评论。后台管理界面需登录验证。
<div class="card mb-4">
<div class="card-body">
<h2 class="card-title"><?= htmlspecialchars($post['title']) ?></h2>
<p class="card-text"><?= nl2br(htmlspecialchars($post['content'])) ?></p>
</div>
</div>
用户认证系统
实现注册登录功能,session管理用户状态。密码验证使用password_verify(),关键操作添加CSRF防护。
// 登录验证
if (password_verify($password, $user['password'])) {
$_SESSION['user_id'] = $user['id'];
header('Location: /admin');
}
安全防护措施
对输出内容使用htmlspecialchars()转义,文件上传限制扩展名。定期更新依赖库,避免使用已弃用的函数如mysql_*系列。
部署与优化
配置.htaccess实现URL重写,启用Gzip压缩。设置缓存头减少重复请求,定期备份数据库。考虑使用OPcache加速PHP执行。
# 开启URL重写
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?path=$1 [L,QSA]






